首页 > 其他分享 >【剑指Offer】38、二叉树的深度

【剑指Offer】38、二叉树的深度

时间:2023-08-15 23:55:20浏览次数:37  
标签:结点 38 TreeNode Offer int 右子 二叉树 深度 root

题目描述:

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

解题思路:

本题相对比较简单。根据二叉树深度的定义,我们有以下理解:如果一棵树只有一个结点,那么它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度为其左子树深度加1;相反,如果根结点只有右子树而没有左子树,那么深度为右子树深度加1;如果既有左子树又有右子树,那么该树的深度为左、右子树深度的较大值加1。

因此,很明显本题应该使用递归的思路来解决。

举例:

编程实现(Java):

public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;

public TreeNode(int val) {
    this.val = val;
}

}
public class Solution {
public int TreeDepth(TreeNode root) {
if(rootnull)
return 0;
if(root.left
null && root.right==null)
return 1;
int leftDepth=TreeDepth(root.left);
int rightDepth=TreeDepth(root.right);
int depth=leftDepth>rightDepth?leftDepth:rightDepth;
return 1+depth;
}
}

标签:结点,38,TreeNode,Offer,int,右子,二叉树,深度,root
From: https://www.cnblogs.com/bujidao1128/p/17632781.html

相关文章

  • 剑指 Offer 38. 字符串的排列(中等)
    题目:classSolution{public:vector<string>result;stringpath;voidbacktracking(conststring&s,vector<bool>&used){if(path.size()==s.size()){//当path长度和s相同时,一种排序收集完成result.push_back(path);......
  • [代码随想录]Day18-二叉树part07
    题目:530.二叉搜索树的最小绝对差思路:一个关键问题——BST的中序遍历是由小到大的顺序,也就是说记录遍历的前一个节点,每次比较当前节点-前一个节点的值即可(因为由小到大所以当前>前一个)代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Val......
  • VTK 实例38:Sobel梯度算子(边缘检测)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageMathematics.h>7#include<vtkImageData.h>8#inc......
  • 二叉树:自下而上,从左到右的层次遍历
    利用栈先进后出的特性,将出队元素依次进栈,然后依次出栈即可完成。#include<stdio.h>#include<stdlib.h>#defineMaxSize100//二叉树的结点类型typedefstructNode{intdata;structNode*lchild,*rchild;}TreeNode,*Tree;//队列的结点类型typedefstru......
  • 【剑指Offer】 24、二叉树中和为某一值的路径
    【剑指Offer】24、二叉树中和为某一值的路径题目描述:输入一颗二叉树的根结点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意:在返回值的list中,数组长度大的数组靠前)解题思路:本题实......
  • 【剑指Offer】26、二叉搜索树与双向链表
    题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路:首先要理解此题目的含义,在双向链表中,每个结点都有前后两个指针;二叉树中,每个结点都有两个指向子结点的左右指针,同时,二叉搜索树树也是一种排序......
  • 【剑指Offer】23、二叉搜索树的后序遍历序列
    【剑指Offer】23、二叉搜索树的后序遍历序列题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路:对于后续遍历序列,序列的最后一个值一定是树的根结点,而由二叉搜索树的性质......
  • [代码随想录]Day17-二叉树part06
    题目:654.最大二叉树思路:和前中序构造树差不多的方法,以前是返回值,现在是返回树代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint*Left*TreeNode*Right*TreeNode*}*/funcconstructMaximumBinaryTree(nums[]in......
  • 剑指 Offer 36. 二叉搜索树与双向链表(中等)
    题目:classSolution{public:Node*head=nullptr;Node*pre=nullptr;voidtraversal(Node*cur){//二叉搜索树中序遍历的顺序就是构建双向链表的顺序if(!cur)return;traversal(cur->left);if(pre){//若前置节点存在,则与当......
  • HDU 3829 Cat VS Dog 猫和狗(二分图)结题报告
    听学长说这道题很ex,但是思路想到的话还是挺简单的。可能是受上一道题(放置机器人)的启发,也是找互相冲突的点连线。但是并不是完全一样(废话)放置机器人那道题是找到冲突点连线后直接求最大匹配即可。这道题稍微把思路变换一下,求出最大完美匹配数\(n\)后,说明有\(n*2\)个人的喜好......