Java 求解二叉树的深度

末蓝、 2023-01-19 09:50 238阅读 0赞

文章目录

    • 一、题目
    • 二、代码
    • 三、总结

一、题目

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


题解:
该题有两种解法,可以采用 BFS(广度优先搜索),或者采用 DFS(深度优先搜索)

二、代码

BFS:

  1. import java.util.*;
  2. public class Solution {
  3. public int TreeDepth(TreeNode root) {
  4. if(root==null){
  5. return 0;
  6. }
  7. //设置队列
  8. Deque<TreeNode> deque = new LinkedList<>();
  9. deque.add(root);
  10. //表示树的长度
  11. int len = 0;
  12. while(!deque.isEmpty()){
  13. //此时队列的长度,也就是一层的队列节点个数
  14. int length = deque.size();
  15. for(int i=0;i<length;i++){
  16. //队列是先进先出
  17. TreeNode temp = deque.poll();
  18. //左子树不空,左子树入队;右子树不空,右子树入队
  19. if(temp.left !=null){
  20. deque.add(temp.left);
  21. }
  22. if(temp.right !=null){
  23. deque.add(temp.right);
  24. }
  25. }
  26. len++;
  27. }
  28. return len;
  29. }
  30. }

DFS:

  1. import java.util.*;
  2. public class Solution {
  3. public int TreeDepth(TreeNode root) {
  4. if(root==null){
  5. return 0;
  6. }
  7. int llen = TreeDepth(root.left);
  8. int rlen = TreeDepth(root.right);
  9. return Math.max(llen,rlen) + 1;
  10. }
  11. }

三、总结

BFS:中心思想就是层序遍历,一层一层遍历,借助队列实现

DFS:中心思想是递归遍历,先左子树走到头,然后在右子树

在这里插入图片描述

BFS:1,2,3,4,5,7
DFS:1,2,4,5,3,7

发表评论

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

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

相关阅读

    相关 N38_求解深度

    题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路:对每一个节点进行分析 只有根

    相关 应用_深度

    题目:输入一颗二叉树的根节点,求该树的深度。 分析:方法一:在[二叉树中和为某一值的路径][Link 1]中已经知道了如何存取树的一条路径,这里我们可以用此方法求出树的最长