Deepest Node in a Binary Tree

题目:

找到一个binary tree中最深的node(如果有多个最大深度node,返回最左node) 

解题思路:
这道题应该是用bfs来解。然后需要注意的地方就是在做bfs的时候需要将右子树先放进去,然后放进去左子树。

代码:

public class DeepestNodeinaBinaryTree {

    public int find(TreeNode root){
        if(root == null){
            return 0;
        }
        Queue<TreeNode> queue = new LinkedList<>();
        TreeNode curr = root;
        queue.offer(curr);
        int rst = curr.val;
        while(!queue.isEmpty()){
            int size = queue.size();
            for(int i = 0; i <= size - 1; i++){
                curr = queue.poll();
                rst = curr.val;
                if(curr.right != null){
                    queue.offer(curr.right);
                }
                if(curr.left != null){
                    queue.offer(curr.left);
                }
            }
        }
        return rst;
    }

    public static void main(String[] args){
        DeepestNodeinaBinaryTree deepestNodeinaBinaryTree = new DeepestNodeinaBinaryTree();
        TreeNode node4 = new TreeNode(4);
        TreeNode node1 = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node5 = new TreeNode(5);
        TreeNode node6 = new TreeNode(6);
        TreeNode node7 = new TreeNode(7);

        node3.right = node2;
        node3.left = node1;
        node6.left = node5;
        node6.right = node7;
        node4.left = node3;
        node4.right = node6;

        int rst = deepestNodeinaBinaryTree.find(node4);
        System.out.println(rst);
    }

}
Find the max depth of a binary tree:

代码:

public int maxDepth(TreeNode root) {
        if(root == null){
            return 0;
        } 
        return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
    }







Comments

Popular Posts