LeetCode222 Count CompleteTree Nodes(计算完全二叉树的节点数) Java 题解

原创 2015年07月09日 20:51:26

题目:

Given a complete binary tree, count the number of nodes.

Definition of a complete binary tree from Wikipedia:
In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the last level h.


解题:

如果用常规的解法一个个遍历,就是O(n)时间复杂度 ,会不通过,这边就不写O(n)的代码了。因为是完全二叉树,满二叉树有一个性质是节点数等于2^h-1,h为高度,所以可以这样判断节点的左右高度是不是一样,如果是一样说明是满二叉树,就可以用刚才的公式,如果左右不相等就递归计算左右节点。

代码:

public static int countNodes(TreeNode root) {
		 if(root==null)
			 return 0;
		 else {
			int left=getLeftHeight(root);
			int right=getRightHeight(root);
			if(left==right)
				return (1<<left)-1;
			else {
				return countNodes(root.right)+countNodes(root.left)+1;
			}
		}
	 }
	 
	 public static int  getRightHeight(TreeNode root) {
		 int height=0;
		 while(root!=null)
		 {
			 height++;
			 root=root.left;
		 }
		 return height;
		
	}
	 
	 public static int  getLeftHeight(TreeNode root) {
		 int height=0;
		 while(root!=null)
		 {
			 height++;
			 root=root.right;
		 }
		 return height;
		
	}


相关文章推荐

leetcode 222: Count Complete Tree Nodes

leetcode 222: Count Complete Tree Nodes c++ java python
  • xudli
  • xudli
  • 2015年06月06日 05:14
  • 13835

Leetcode[222]-Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes.Definition of a complete binary tree from Wi...

LeetCode222——Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes. Definition of a complete binary tree fro...

LeetCode222:Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from W...

[LeetCode] Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes.Definition of a complete binary tree from Wi...

leetcode222---Count Complete Tree Nodes(求完全二叉树节点数)

问题描述:Given a complete binary tree, count the number of nodes.In a complete binary tree every level, ...
  • will130
  • will130
  • 2016年01月22日 22:28
  • 220

Leetcode 222 - ount Complete Tree Nodes(二分 + 完全二叉树)

题意给一个完全二叉树,求节点数目。思路首先,假设完全二叉树的深度为h,那么0到h - 1都是满的,只有h不一定是满的。算法1我们只需要知道最后一层的最后一个不是NULL的节点是哪一个就可以了。我们假设...
  • Lzedo
  • Lzedo
  • 2017年02月13日 14:28
  • 92

LeetCode 222. Count Complete Tree Nodes 题解——Java

题目链接:https://leetcode.com/problems/count-complete-tree-nodes/#/description 题目要求:计算完全二叉树的节点个数 思...

求完全二叉树的节点数 时间复杂度小于O(N)

给定一棵完全二叉树的根节点root,返回这棵树的节点个数。如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。给定树的根结点root,请返回树的大小。二分的思想。看完全二叉树的最后的最右一...

有关完全二叉树求节点数和前缀树求字符串是否重复的两道算法题

有关求完全二叉树的节点数和用前缀树求字符串是否重复的两道算法题总结
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode222 Count CompleteTree Nodes(计算完全二叉树的节点数) Java 题解
举报原因:
原因补充:

(最多只允许输入30个字)