当前位置:网站首页>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;
}
边栏推荐
- 618 "low key" curtain call, how can baiqiushangmei join hands with the brand to cross the "uncertain era"?
- Reptile exercises (II)
- Redis cluster simulated message queue
- 国信证券在网上开户安全吗?
- selenium 元素信息
- 【硬核干货】数据分析哪家强?选Pandas还是选SQL
- Cocos2d-x项目总结中的一些遇到的问题
- How to select the Block Editor? Impression notes verse, notation, flowus
- What does software testing do? What are the requirements for learning?
- 淺淺的談一下ThreadLocalInsecureRandom
猜你喜欢
C application interface development foundation - form control (5) - grouping control
深度學習 卷積神經網絡(CNN)基礎
Base du réseau neuronal de convolution d'apprentissage profond (CNN)
建立自己的网站(16)
95后阿里P7晒出工资单:狠补了这个,真香...
leetcode刷题:二叉树12(二叉树的所有路径)
Win10 x64环境下基于VS2017和cmake-gui配置使用zxing以及opencv,并实现data metrix码的简单检测
Fundamentals of deep learning convolutional neural network (CNN)
Using repositoryprovider to simplify the value passing of parent-child components
The city chain technology Digital Innovation Strategy Summit was successfully held
随机推荐
Gstreamer中的task
leetcode刷题:二叉树10(完全二叉树的节点个数)
Go language | 01 wsl+vscode environment construction pit avoidance Guide
【obs】libobs-winrt :CreateDispatcherQueueController
Interviewer: what is the internal implementation of set data types in redis?
城链科技数字化创新战略峰会圆满召开
力扣 729. 我的日程安排表 I
Build your own website (16)
-v parameter of GST launch
leetcode刷题:二叉树18(最大二叉树)
再忙不能忘安全
What is the function of okcc call center
使用easyexcel模板导出的两个坑(Map空数据列错乱和不支持嵌套对象)
leetcode刷题:二叉树12(二叉树的所有路径)
2023年深圳市绿色低碳产业扶持计划申报指南
Go language learning tutorial (16)
力扣 1200. 最小绝对差
Reptile exercises (II)
Wildcard selector
okcc呼叫中心有什么作用