剑指Offer: 二叉树的深度

本是古典 何须时尚 2023-07-18 14:14 104阅读 0赞
1. 题目描述

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

2. 提取关键词

二叉树深度

3. 思路
  • 见注释
4. 代码(Java)
  1. /**
  2. public class TreeNode {
  3. int val = 0;
  4. TreeNode left = null;
  5. TreeNode right = null;
  6. public TreeNode(int val) {
  7. this.val = val;
  8. }
  9. }
  10. */
  11. public class Solution {
  12. public int TreeDepth(TreeNode root) {
  13. if(root==null){
  14. return 0;
  15. }
  16. //统计左节点的数
  17. int LD=TreeDepth(root.left);
  18. //统计左节点的数
  19. int RD=TreeDepth(root.right);
  20. //到底端时h=1,每退出一层就返回对比左右子树最大深度并加1,最后返回的值就是最大的深度
  21. return (LD>RD?LD:RD)+1;
  22. }
  23. }
  24. //非递归
  25. import java.util.Queue;
  26. import java.util.LinkedList;
  27. public class Solution {
  28. public int TreeDepth(TreeNode pRoot)
  29. {
  30. if(pRoot == null){
  31. return 0;
  32. }
  33. Queue<TreeNode> queue = new LinkedList<TreeNode>();
  34. queue.add(pRoot);
  35. int depth = 0, count = 0, nextCount = 1;//出栈时count记录出栈结点数,记录nextCount记录本层结点数
  36. while(queue.size()!=0){
  37. TreeNode top = queue.poll();
  38. count++;
  39. if(top.left != null){
  40. queue.add(top.left);
  41. }
  42. if(top.right != null){
  43. queue.add(top.right);
  44. }
  45. if(count == nextCount){
  46. nextCount = queue.size();
  47. count = 0;
  48. depth++;
  49. }
  50. }
  51. return depth;
  52. }
  53. }
5.复杂度
  • 暂无
6. 知识积累
  • 暂无

发表评论

表情:
评论列表 (有 0 条评论,104人围观)

还没有评论,来说两句吧...

相关阅读

    相关 offer 深度

    [剑指offer题型分类及各题的代码及解题思路][offer] 1、题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树...

    相关 Offer | 深度

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

    相关 offer:深度

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

    相关 Offer-深度

    题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路—使用堆栈:使用堆栈依次压入