首页 > 其他分享 >二叉树-前序遍历-leetcode222

二叉树-前序遍历-leetcode222

时间:2023-06-29 14:36:07浏览次数:44  
标签:right TreeNode leetcode222 val 前序 二叉树 root 节点

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

示例 1:

输入:root = [1,2,3,4,5,6]
输出:6
示例 2:

输入:root = []
输出:0
示例 3:

输入:root = [1]
输出:1
提示:

树中节点的数目范围是[0, 5 * 104]
0 <= Node.val <= 5 * 104
题目数据保证输入的树是 完全二叉树
进阶:遍历树来统计节点是一种时间复杂度为 O(n) 的简单解决方案。你可以设计一个更快的算法吗?

解法:前序遍历


//leetcode submit region begin(Prohibit modification and deletion)
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {

    int res = 1;

    public int countNodes(TreeNode root) {
        if(root==null){
            return 0;
        }

        if(root.left!=null){
            res++;
        }

        if(root.right!=null){
            res++;
        }

        countNodes(root.right);
        countNodes(root.left);



        return res;

    }

}
//leetcode submit region end(Prohibit modification and deletion)

标签:right,TreeNode,leetcode222,val,前序,二叉树,root,节点
From: https://www.cnblogs.com/xiaoshahai/p/17514131.html

相关文章

  • 剑指 Offer 27. 二叉树的镜像
    请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:4  /  2  7 /\ /1 36 9镜像输出:4  /  7  2 /\ /9 63  1示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]来源:力扣(LeetCode)链接:https://lee......
  • 5分钟了解二叉树之红黑树
    转载请注明出处:https://i.cnblogs.com/posts/edit;postId=16032891 书接上一回。上一篇已经讲解到了AVL树,这一篇会接着讲另一个重量级的数据结构:红黑树。红黑树红黑树是一种自平衡二叉搜索树。每个节点存储一个表示“颜色”(“红色”或“黑色”)的额外位,用于确保树在插入和删......
  • 7-7 平衡二叉树的根
    将给定的一系列数字插入初始为空的AVL树,请你输出最后生成的AVL树的根结点的值。输入格式:输入的第一行给出一个正整数N(≤20),随后一行给出N个不同的整数,其间以空格分隔。输出格式:在一行中输出顺序插入上述整数到一棵初始为空的AVL树后,该树的根结点的值。输入样例1:5887061......
  • 代码随想录算法训练营第十七天| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中
     654.最大二叉树 比较简单,直接上代码1TreeNode*constructMax_cursor(vector<int>&nums)2{3if(nums.size()==0)returnNULL;4//getMaxNum5intindex=0;6intmax_=INT_MIN;7for(inti=0;i<nums.size();i++)8......
  • 图文示例二叉树的编码实现过程
    前言在上一篇文章中,带大家一起学习认识了树型数据结构的定义和特点,并特别介绍了二叉树的遍历操作,分别有:前序遍历、中序遍历、后序遍历。前中后的核心区别是根据根节点在遍历过程中的位置决定的,即:根节点在最前面的称之为中序遍历,根节点在中间的称之为中序遍历,根节点在最后的称之为......
  • 关于二叉树的操作
    树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。在面试环节中,二叉树也是必考的模块。本文主要讲二叉树操作的相关知识,梳理面试常考的内容。一起来复习吧。 本篇针对面试中常见的二叉树操作作个总结:前序遍历,中序遍历,后序遍历;层次遍历;求树的结点数;求树的叶子数;求......
  • 二叉树-快排-leetcode912
    给你一个整数数组nums,请你将该数组升序排列。示例1:输入:nums=[5,2,3,1]输出:[1,2,3,5]示例2:输入:nums=[5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1<=nums.length<=5*104-5*104<=nums[i]<=5*104思路:快排,或者叫前序二叉树,排序后端结果是一个二叉搜索树//lee......
  • 树和二叉树详细讲解
    前言在上篇文章中,向大家介绍了线性数据结构中的栈、队列和串三种数据结构,相对来说比较简单,栈的特点是先进后出(FILO),队列的特点是先进先出(FIFO)。栈包含入栈和出栈两个操作,两个操作操作的都是栈顶元素;队列包含入队和出队两个操作,元素从队尾进入队列,需要时从队头取出元素。全......
  • 二叉树
    #include<stdio.h>#include<stdlib.h>#include<malloc.h>typedefstructBTNode{ chardata; structBTNode*lchild; structBTNode*rchild;}*BiTree;voidcreateBiTree(BiTree*t){//此处补充代码,输入二叉树的先序遍历序列建立二叉树 chars;......
  • [leetcode]114. 二叉树展开为链表
    总结:怎样写递归函数?关键是把递归函数的功能定义清楚,并在递归函数体中使用自身来做事,此时不要关注递归函数执行的细节。也就是写高层级代码的时候不要关注低层级的事情,这就叫抽象。关注也没有用,想不清楚的。 1classSolution{2publicvoidflatten(TreeNoderoot){......