Maxium depth of BT 104

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

        List<TreeNode> q = new ArrayList<>();
        TreeNode current = root;
        int level = 0;
        q.add(root);
        while (!q.isEmpty()) {
            int siz = q.size();
            while (siz-- > 0) {
                current = q.remove(0);
                if (current.left != null) { q.add(current.left); } 
                if (current.right != null) { q.add(current.right); }
            }
            level++;
        }
        return level;

        if (root == null) return 0;
        Stack<TreeNode> treeq = new Stack<>();
        Stack<Integer> levelq = new Stack<>();
        treeq.push(root); levelq.push(1);
        int maxLevel = 0;
        while (!treeq.isEmpty()) {
            TreeNode curNode = treeq.pop();
            Integer curLevel = levelq.pop();
            maxLevel = Math.max(maxLevel, curLevel);
            if (curNode.left != null) {
                treeq.push(curNode.left);
                levelq.push(curLevel + 1);
            }
            if (curNode.right != null) {
                treeq.push(curNode.right);
                levelq.push(curLevel + 1);
            }
        }
        return maxLevel;
}

Min depth of BT 111

public int minDepth(TreeNode root) {
        if (root == null) return 0;
        int left = minDepth(root.left), right = minDepth(root.right);
        return (left == 0 || right == 0) ? left + right + 1 : Math.min(left, right) + 1; 
        //left=0-->left null, then minDepth(right) + 1; otherwise minDepth(left) + 1; otherwise min of left/right + 1.

        if (root == null) return 0;
        Queue<TreeNode> nodeq = new LinkedList<>();
        Queue<Integer> levelq = new LinkedList<>();
        nodeq.offer(root); levelq.offer(1);
        while (!nodeq.isEmpty()) {
            TreeNode curNode = nodeq.poll();
            Integer curLevel = levelq.poll();
            if (curNode.left == null && curNode.right == null) return curLevel;
            if (curNode.left != null) {
                nodeq.offer(curNode.left);
                levelq.offer(curLevel + 1);
            }
            if (curNode.right != null) {
                nodeq.offer(curNode.right);
                levelq.offer(curLevel + 1);
            }
        }
        return -1;
}

Invert Binary Tree 226

     4                        4
   /   \                    /   \
  2     7                  7     2
 / \   / \     /\         / \    / \
1   3 6   9              9   6  3   1
public TreeNode invertTree(TreeNode root) {
        if (root == null) return root;
        TreeNode tmp = root.left;
        root.left = invertTree(root.right);
        root.right = invertTree(tmp);
        return root;
    }

results matching ""

    No results matching ""