LeetCode_222Count Complete Tree Nodes
来源:互联网 发布:淘宝女装店铺排行榜 编辑:程序博客网 时间:2024/06/04 00:19
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.
下面是递归,结果是TimeOut
public int countNodes(TreeNode root) { if(root == null) return 0; return calNodes(root); } private int calNodes(TreeNode root){ if(root == null) return 0; int count = 0; count += calNodes(root.left) + calNodes(root.right); return count; }
下面是改进版本
如果从某节点一直向左的高度 = 一直向右的高度, 那么以该节点为root的子树一定是complete binary tree. 而 complete binary tree的节点数,可以用公式算出 2^h - 1. 如果高度不相等, 则递归调用 return countNode(left) + countNode(right) + 1.
public int countNodes(TreeNode root) { if(root == null) return 0; int left = getLeft(root)+1; int right = getRight(root)+1; if(left == right){ return (2<<(left-1))-1; }else { return countNodes(root.left)+countNodes(root.right)+1; } } private int getLeft(TreeNode root){ int count = 0; if(root == null) return 0; while (root.left!=null) { root = root.left; count++; } return count; } private int getRight(TreeNode root){ int count =0; if(root == null) return 0; while(root.right !=null){ root = root.right; count++; } return count; }
0 0
- LeetCode_222Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes(****)
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- 【IDE-Visual Studio】引用ms32.lib 编译时发现链接错误
- sybase备份恢复
- 单循环链表
- 【Java】日志知识总结和常用组合配置(commons-logging,log4j,slf4j,logback)
- HDOJ 2120 Ice_cream's world I(并查集)
- LeetCode_222Count Complete Tree Nodes
- jQuery学习之元素包装集
- const和#define之间的区别,typedef和#define之间的区别
- java 判断对象是否为空
- LBS根据经纬查看附近商家的实现
- [leetcode-34]Search for a Range(C)
- “/”应用程序中的服务器错误
- hdu 5325 Crazy Bobo
- UNITY3D学习笔记7