当前位置:网站首页>Leetcode skimming: binary tree 10 (number of nodes of a complete binary tree)
Leetcode skimming: binary tree 10 (number of nodes of a complete binary tree)
2022-07-05 19:59:00 【Taotao can't learn English】
222. The number of nodes in a complete binary tree
Give a completely binary tree , Find out the number of nodes of the tree .
Example 1:
- Input :root = [1,2,3,4,5,6]
- Output :6
Example 2:
- Input :root = []
- Output :0
Example 3:
- Input :root = [1]
- Output :1
Tips :
- The number of nodes in the tree ranges from [0, 5 * 10^4]
- 0 <= Node.val <= 5 * 10^4
- The topic data ensures that the input tree is Perfect binary tree
Direct sequence traversal search , It can be regarded as a happy method .
package com.programmercarl.tree;
import java.util.ArrayDeque;
import java.util.Deque;
/** * @ClassName CountNodes * @Descriotion TODO * @Author nitaotao * @Date 2022/7/4 10:15 * @Version 1.0 * https://leetcode.cn/problems/count-complete-tree-nodes/ * 222. The number of nodes in a complete binary tree **/
public class CountNodes {
public int countNodes(TreeNode root) {
/** * Sequence traversal */
if (root == null) {
return 0;
}
Deque<TreeNode> deque = new ArrayDeque<TreeNode>();
deque.offer(root);
int sum = 0;
while (!deque.isEmpty()) {
int size = deque.size();
while (size > 0) {
root = deque.pop();
sum++;
if (root.left != null) {
deque.offer(root.left);
}
if (root.right != null) {
deque.offer(root.right);
}
size--;
}
}
return sum;
}
}
According to the properties of full binary tree , Number of nodes = front n-1 Number of layer nodes + Number of nodes in the last layer
front n-1 Number of layer nodes = 2^(n-1) -1
/** * According to the properties of complete binary tree * * @param root * @return */
public int countNodes(TreeNode root) {
if (root == null) {
return 0;
}
int leftDepth = getDepth(root.left);
int rightDepth = getDepth(root.right);
if (leftDepth == rightDepth) {
// If the depth is equal , Then the left side is full of binary trees
// leftDepth Is to calculate the depth from the head node of the current subtree , Not the root node of two trees
// ( 2 ^ leftDepth - 1 ) + 1 1 It is the root node of two trees
return ((1 << leftDepth) - 1) + 1 + countNodes(root.right);
} else {
// The right subtree is a full binary tree
return ((1 << rightDepth) - 1) + 1 + countNodes(root.left);
}
}
/** * From current subtree Start to calculate the depth * * @param root * @return */
public int getDepth(TreeNode root) {
int depth = 0;
while (root != null) {
root = root.left;
depth++;
}
return depth;
}
边栏推荐
- C application interface development foundation - form control (6) - menu bar, toolbar and status bar controls
- 线程池参数及合理设置
- Is it safe for Guosen Securities to open an account online?
- 建议收藏,我的腾讯Android面试经历分享
- Tasks in GStreamer
- 再忙不能忘安全
- webuploader文件上传 拖拽上传 进度监听 类型控制 上传结果监听控件
- 城链科技数字化创新战略峰会圆满召开
- Go language | 02 for loop and the use of common functions
- 随机数生成的四种方法|Random|Math|ThreadLocalRandom|SecurityRandom
猜你喜欢
Win10 x64环境下基于VS2017和cmake-gui配置使用zxing以及opencv,并实现data metrix码的简单检测
How to safely and quickly migrate from CentOS to openeuler
Parler de threadlocal insecurerandom
Necessary skills for interview in large factories, 2022android will not die, I will not fall
ACM getting started Day1
How to apply smart contracts more wisely in 2022?
再忙不能忘安全
[OBS] qstring's UTF-8 Chinese conversion to blog printing UTF-8 char*
[C language] string function and Simulation Implementation strlen & strcpy & strcat & StrCmp
Jvmrandom cannot set seeds | problem tracing | source code tracing
随机推荐
How about testing outsourcing companies?
leetcode刷题:二叉树11(平衡二叉树)
C application interface development foundation - form control (6) - menu bar, toolbar and status bar controls
Based on vs2017 and cmake GUI configuration, zxing and opencv are used in win10 x64 environment, and simple detection of data matrix code is realized
Debezium series: PostgreSQL loads the correct last submission LSN from the offset
使用easyexcel模板导出的两个坑(Map空数据列错乱和不支持嵌套对象)
【无标题】
leetcode刷题:二叉树18(最大二叉树)
Multi branch structure
Force buckle 1200 Minimum absolute difference
Concept and syntax of function
常用运算符与运算符优先级
14. Users, groups, and permissions (14)
Securerandom things | true and false random numbers
Base du réseau neuronal de convolution d'apprentissage profond (CNN)
sun.misc.BASE64Encoder报错解决方法[通俗易懂]
Successful entry into Baidu, 35K monthly salary, 2022 Android development interview answer
淺淺的談一下ThreadLocalInsecureRandom
随机数生成的四种方法|Random|Math|ThreadLocalRandom|SecurityRandom
Xaas trap: all things serve (possible) is not what it really needs