`
hcx2013
  • 浏览: 88854 次
社区版块
存档分类
最新评论

完全二叉树结点数

 
阅读更多

给定一棵完全二叉树的头节点head,返回这棵树的节点个数。如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。 

 

 

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }
}*/
public class Solution {
    public int nodeNum(TreeNode head) {
    	if (head == null) {
    		return 0;
    	}
    	return solve(head, 1, mostLeftLevel(head, 1));
    }

	private int solve(TreeNode head, int i, int h) {
		if (i == h) {
			return 1;
		}
		if (mostLeftLevel(head.right, i+1) == h) {
			return solve(head.right, i+1, h) + (1 << (h-i));
		} else {
			return solve(head.left, i+1, h) + (1 << (h-i-1));
		}
	}

	private int mostLeftLevel(TreeNode head, int i) {
		while (head != null) {
			i++;
			head = head.left;
		}
		return i-1;
	}
}

 

分享到:
评论

相关推荐

    第六章 树和二叉树作业及答案(100分).docx

    - **题目描述**:一棵完全二叉树结点数为25,需要确定其高度。 - **答案解析**:对于一个完全二叉树,如果结点数为\(n\),那么它的高度\(h\)可以通过求解不等式\(2^{h-1} \leq n ^h\)来得到。当\(n = 25\)时,容易...

    二叉树的叶子结点数及深度

    在实际应用中,二叉树具有多种形态,如满二叉树、完全二叉树、平衡二叉树等。 - **叶子结点(Leaf Node)**:二叉树中没有子节点的结点称为叶子结点。 - **深度(Depth)**:根节点到某个节点路径上边的数量称为该...

    计算二叉树的结点数和高度

    先序、中序、后序遍历二叉树,计算二叉树的结点数、叶子结点数、度为1的结点数和高度。

    二叉树的建立、遍历、统计度为012的结点数

    例如,一棵有n个结点的完全二叉树中,叶子结点的数目总是比度为2的结点多1,而度为1的结点数要么为0,要么为1。通过递归或层次遍历,我们可以轻松地统计出这些结点的数目。 在实际应用中,二叉树可以用来实现多种...

    [详细完整版]数据结构07.doc

    方法3:利用完全二叉树的性质,若结点数N,设第i层是满的,那么叶子结点数为N - i。 7.5 完全二叉树第6层有5个叶子,画出所有可能的结构,需要考虑最后一层叶子结点的分布。叶子结点最多的情况出现在最后一层尽可能...

    很强的资源:数据结构题库+答案

    这种表示方法常用于完全二叉树或近似完全二叉树的场景中。 #### 6. 权重与权值路径 权重和权值路径是图论中的重要概念,这里应用于二叉树的场景中,考察的是对树中节点间路径长度的理解。 综上所述,这些题目覆盖...

    数据结构(C语言版) 第五章 树与二叉树 知识梳理 + 作业习题详解1

    3. 完全二叉树的叶子节点数n0与2度节点数n2的关系是n0 = n2 + 1。 完全二叉树是所有层都尽可能填满的二叉树,除了最后一层。若二叉树有5000个节点,那么根据性质3,其叶子节点的个数为2500。 二叉树的存储方式有两...

    数据结构C#二叉树的基本运算

    二叉树的基本运算还包括计算结点数,这可以通过递归或非递归方式实现,通过遍历树的每一个节点并累加计数。复制二叉树则需要创建一个新的二叉树,其结构和原树完全相同,这通常通过深度优先搜索或广度优先搜索来完成...

    二叉树练习题及答案.docx

    4. **叶子结点与度的关系**:对于任何二叉树,总结点数n、叶子结点数n0、度为1的结点数n1、度为2的结点数n2之间存在关系:n = n0 + n1 + n2。此外,如果已知n0和n1,可以通过公式n = n0 + n1 + 2n2计算总结点数。 5...

    《数据结构与算法》试卷a2009.pdf

    7. 完全二叉树结点数:3层的完全二叉树至少有4个结点,因为第二层至少有两个结点。 8. 时间复杂度:给定的时间复杂度是线性加二次加对数,主要项是二次,所以时间复杂度为O(n^2)。 9. 链式存储线性表:地址可以连续...

    11082 完全二叉树的种类

    ”这里提到的“完全二叉树”是指除了最后一个层级外,其他层级的结点数都达到最大值,并且最后一个层级的结点都尽可能地集中在左侧的二叉树。此外,题目还特别指出,在构造过程中不能改变叶结点的相对顺序,也不能...

    判断二叉树是否为完全二叉树的实例

    完全二叉树是指除了最后一层之外,其他每一层的结点数都是满的。最后一层如果也满了,是一颗满二叉树,也是完全二叉树。最后一层如果不满,缺少的结点也全部的集中在左边,那也是一颗完全二叉树。 判断一棵二叉树...

    二叉树 基础

    对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。 一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。而在一棵二叉树中,除最后一...

    数据结构历年真题,关于二叉树的

    本文总结了关于二叉树的知识点,包括完全二叉树的高度、二叉树的结点数、完全二叉树的结点编号、完全二叉树的高度与结点数、二叉树的分类、树的深度、树的孩子兄弟表示法、森林的二叉树和森林的遍历等。这些知识点是...

    二叉树的顺序存储,数据结构

    它有几种特殊的形态,如满二叉树(每个节点都有两个子节点)和完全二叉树(除了最后一层,其他层都是满的,且最后一层的节点都尽可能地靠左)。 二叉树的顺序存储与链式存储是两种主要的存储方式。顺序存储通常指的...

    数据结构二叉树实验头文件

    这种树的特点是每一层上的结点数都是最大结点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且或者最后一层是满的,或者是在右边缺少连续若干结点,则此二叉树为完全二叉树。具有n个结点的完全二叉树的...

    树的高度和叶子结点数.rar_二叉树

    而在完全二叉树中(除最后一层外,其余层都是满的,且最后一层的节点尽可能靠左),叶子节点数和节点总数之间存在特定的数学关系。 总结来说,这个压缩包提供的资源可以帮助学习者掌握如何在实际编程中处理树的高度...

    浙江大学数据结构计算机考研答案

    #### 五、完全二叉树结点数与斐波那契数列关系 1. **归纳证明**: - 当\(h = 0\)时,\(N_h = 0\), \(F_{2-1} = 0\),等式成立。 - 当\(h = 1\)时,\(N_h = 1\), \(F_{3-1} = 1 + 1 - 1 = 1\),等式成立。 - 当\(h...

    数据结构试题 按章节分布 八套试卷

    3.二叉树的第I层上最多含有结点数为( ) A)2I B)2I-1-1 C)2I-1 D)2I-1 4.具有10个叶结点的二叉树中有( )个度为2的结点 A)8 B)9 C)10 D)11 5.在下述结论中,正确的是( ) ①只有一个结点的...

    第六章树和二叉树学生版1

    12. 高度为h且只有度为0和2的二叉树结点数:至少有2^h-1个结点。 13. 线索二叉树的目的:线索二叉树的引入是为了在二叉树中快速找到结点的前驱或后继,答案是A。 14. 树的基本性质:树中每个结点有且仅有一个父...

Global site tag (gtag.js) - Google Analytics