当前位置:网站首页>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;
}

边栏推荐
- leetcode刷题:二叉树18(最大二叉树)
- After 95, Alibaba P7 published the payroll: it's really fragrant to make up this
- 再忙不能忘安全
- Complete interview questions for interviewers and senior Android engineers in front-line Internet enterprises
- 深度学习 卷积神经网络(CNN)基础
- Debezium series: PostgreSQL loads the correct last submission LSN from the offset
- ICTCLAS用的字Lucene4.9捆绑
- Securerandom things | true and false random numbers
- MySql的root密码忘记该怎么找回
- gst-launch的-v参数
猜你喜欢

Let's talk about threadlocalinsecurerandom

Xaas trap: all things serve (possible) is not what it really needs

40000 word Wenshuo operator new & operator delete

Force buckle 1200 Minimum absolute difference

third-party dynamic library (libcudnn.so) that Paddle depends on is not configured correctl

How about testing outsourcing companies?

Go language | 03 array, pointer, slice usage

14. Users, groups, and permissions (14)

What do software test engineers do? How about the prospect of treatment?

leetcode刷题:二叉树11(平衡二叉树)
随机推荐
Tasks in GStreamer
Debezium series: modify the source code to support UNIX_ timestamp() as DEFAULT value
Android interview classic, 2022 Android interview written examination summary
Autumn byte interviewer asked you any questions? In fact, you have stepped on thunder
C langue OJ obtenir PE, ACM démarrer OJ
众昂矿业:2022年全球萤石行业市场供给现状分析
淺淺的談一下ThreadLocalInsecureRandom
Is it safe for Guosen Securities to open an account online?
【无标题】
Bitcoinwin (BCW) was invited to attend Hanoi traders fair 2022
Complete interview questions for interviewers and senior Android engineers in front-line Internet enterprises
力扣 1200. 最小绝对差
使用easyexcel模板导出的两个坑(Map空数据列错乱和不支持嵌套对象)
Cocos2d-x项目总结中的一些遇到的问题
C application interface development foundation - form control (6) - menu bar, toolbar and status bar controls
Base du réseau neuronal de convolution d'apprentissage profond (CNN)
Common operators and operator priority
The difference between ID selector and class selector
图嵌入Graph embedding学习笔记
Force buckle 729 My schedule I