Java for LeetCode 222 Count Complete Tree Nodes
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.
解题思路:
计算完全二叉树节点,直接递归会TLE,一个不错的思路是判断是否为满二叉树,然后进行递归,JAVA实现如下:
    public int countNodes(TreeNode root) {
        if(root==null)
        	return 0;
        int leftHeight=1,rightHeight=1;
        TreeNode temp=root.left;
        while(temp!=null){
        	temp=temp.left;
        	leftHeight++;
        }
        temp=root.right;
        while(temp!=null){
        	temp=temp.right;
        	rightHeight++;
        }
        if(leftHeight==rightHeight)
        	return (1<<leftHeight)-1;
        return countNodes(root.left)+countNodes(root.right)+1;
    }
Java for LeetCode 222 Count Complete Tree Nodes的更多相关文章
- [LeetCode] 222. Count Complete Tree Nodes 求完全二叉树的节点个数
		
Given a complete binary tree, count the number of nodes. Note: Definition of a complete binary tree ...
 - (medium)LeetCode  222.Count Complete Tree Nodes
		
Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from W ...
 - 【刷题笔记】LeetCode 222. Count Complete Tree Nodes
		
题意 给一棵 complete binary tree,数数看一共有多少个结点.做题链接 直观做法:递归 var countNodes = function(root) { if(root===nul ...
 - leetcode 222.Count Complete Tree Nodes
		
完全二叉树是从左边开始一点点填充节点的,因此需要计算所有的节点的个数. 则分别从左边和右边来进行传递的,当左右是完全二叉树的时候,其节点个数就是pow(2,h)-1. /** * Definition ...
 - [leetcode]222. Count Complete Tree Nodes完全二叉树的节点数
		
/* 满二叉树的特点是2^n-1,对于完全二叉树,一个node如果左右子树深度相同,那么 是一个满二叉树.如果不是,那就把node算上,继续往下看,下边的可能是满二叉树 由于完全二叉树中有一些子满二叉 ...
 - leetcode 958. Check Completeness of a Binary Tree 判断是否是完全二叉树 、222. Count Complete Tree Nodes
		
完全二叉树的定义:若设二叉树的深度为h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树. 解题思路:将树按照层进行遍历,如果 ...
 - 【LeetCode】222. Count Complete Tree Nodes 解题报告(Python)
		
[LeetCode]222. Count Complete Tree Nodes 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个 ...
 - 【刷题-LeetCode】222. Count Complete Tree Nodes
		
Count Complete Tree Nodes Given a complete binary tree, count the number of nodes. Note: Definition ...
 - LeetCode OJ 222. Count Complete Tree Nodes
		
Total Accepted: 32628 Total Submissions: 129569 Difficulty: Medium Given a complete binary tree, cou ...
 
随机推荐
- JavaScript内置对象与原型继承
			
(一) 理解JavaScript类定义 1>关于内置对象理解 console.log(Date.prototype.__proto__===Object.prototype //tru ...
 - _SYS_LIB="-lm -lnsl -ldl"
			
-lm 是指连接libm.so 意思是连接数学库, -lnsl 如果涉及RPC编程,必然需要libnsl.so,因此必须在编译选项里加入 -lnsl. gcc 编译选项 -L是要 ...
 - 【8-17】c++学习笔记01
			
控制台程序不自动退出方法: system("pause"); getchar() 使用执行 ctrl+F5,开始调试 F5会出现闪退 动态内存分配 //construct c st ...
 - mysql 时间格式与日期格式转换,去除datetime中的具体时间
			
DATE_FORMAT(`addtime`,'%Y-%m-%d') 时间格式转成字符串 time_format('1924-01-02', '%Y-%m-%d') 字符串转成时间格式 CONVERT ...
 - Emoji表情符号录入MySQL数据库报错的解决方案(MySQL utf8与utf8mb4区别)
			
本文转自:http://blog.itpub.net/26230597/viewspace-1243233/前言:手机app应用评论的时候,恢复表情符号,提示失败. 1,查看tomcat后台日志,核心 ...
 - shell学习之路:流程控制(for)
			
for循环的语法: 1. for 变量 in 值1 值2 值3.... do 程序 done 例如:下列脚本会分别打印4次 分别是morning noon afternoon evening的值 # ...
 - 第一个C++例子
			
#include <iostream> using namespace std; class Time { private: int hour; int minute; int secon ...
 - ajax浅析---UpdatePanel
			
使用UpdatePanel控件 UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何 ...
 - UI第六节——UINavigationController 详解
			
1. UINavigationController 是一个容器类.里面盛放的是UIViewController. 容器的意思是,如果你不放入UIViewController,里面就是空的,什么也没有. ...
 - "A transport-level error has occurred when sending the request to the server,指定的网络名不在可用"的解决办法
			
项目在外网服务器上运行的时候,遇到一个异常:"A transport-level error has occurred when sending the request to the ser ...