欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

104.二叉树的最大深度。2星

程序员文章站 2024-02-28 23:46:10
...

方法一:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
          if(root==null){return 0;}
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        int maxceng=0;
        
        queue.offer(root);
        queue.offer(null);
        //将一层的节点全部入栈后,加入一个空节点作为标志位
        while(!queue.isEmpty()){
            TreeNode st2 = queue.poll();
            if(st2==null){
                maxceng++;
                if(!queue.isEmpty()) queue.offer(null);
                //防止在遍历完成后多次加入空节点造成死循环
            }
            else {
                if (st2.left!=null){queue.offer(st2.left);}
                if (st2.right!=null){queue.offer(st2.right);}
            }
        }
        return maxceng;
    }
}

方法二:
递归前序遍历:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        
        int left = maxDepth(root.left);
        int right = maxDepth(root.right);

        return left > right ? left + 1 : right + 1;
    }
}
相关标签: Leetcode学习