Loading

剑指 Offer 55 - I. 二叉树的深度

https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/

大体的思路都是一样的,但是代码有两种写法,值得自己去学习
DFS

class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null) return 0; // 结点为空,结果为0
        else{
            int left = maxDepth(root.left);
            int right = maxDepth(root.right);
			// 结点不为空,继续向下求,并将当前的深度加上去
            return Math.max(left, right) + 1;
        }
    }
}
  • 方法一:
class Solution {
    public int maxDepth(TreeNode root) {
        if(root== null) return 0;
        int res = 0;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty()){
            res++;
            int n = queue.size();
//利用queue中的元素个数来完成遍历,顺便把queue清空,再加入新的
            for(int i = 0; i < n; i++){
                TreeNode node = queue.poll();
                if(node.left != null) queue.add(node.left);
                if(node.right != null) queue.add(node.right);
            }
        }
        return res;
    }
}
  • 第二种方法
    tmp我看不懂是什么意思
class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null) return 0;
        List<TreeNode> queue = new LinkedList<>() {
			{ add(root); }
			}, tmp;
        int res = 0;
        while(!queue.isEmpty()) {
            tmp = new LinkedList<>();
            for(TreeNode node : queue) {
                if(node.left != null) tmp.add(node.left);
                if(node.right != null) tmp.add(node.right);
            }
            queue = tmp;
            res++;
        }
        return res;
    }
}
posted @ 2021-11-10 16:50  Zhbeii  阅读(51)  评论(0)    收藏  举报