Finding max depth of binary tree without recursion

前端 未结 7 899
夕颜
夕颜 2020-12-24 09:23

Recursive mechanism to find max depth of depth of binary tree is very straightforward, but how can we do it efficiently without recursion as I have large tree where I would

7条回答
  •  隐瞒了意图╮
    2020-12-24 09:42

    I have written following logic to do find max and min depth which doesn't involve recursion and without increasing the space complexity.

    // Find the maximum depth in the tree without using recursion
    private static int maxDepthNoRecursion(TreeNode root) {
        return Math.max(maxDepthNoRecursion(root, true), maxDepthNoRecursion(root, false)); 
    }
    
    // Find the minimum depth in the tree without using recursion
    private static int minDepthNoRecursion(TreeNode root) {
        return Math.min(maxDepthNoRecursion(root, true), maxDepthNoRecursion(root, false)); 
    }
    
    private static int maxDepthNoRecursion(TreeNode root, boolean left) {
        Stack stack = new Stack<>();
        stack.add(root);
        int depth = 0;
        while (!stack.isEmpty()) {
            TreeNode node = stack.pop();
            if (left && node.left != null) stack.add(node.left);
            // Add the right node only if the left node is empty to find max depth
            if (left && node.left == null && node.right != null) stack.add(node.right); 
            if (!left && node.right != null) stack.add(node.right);
            // Add the left node only if the right node is empty to find max depth
            if (!left && node.right == null && node.left != null) stack.add(node.left);
            depth++;
        }
        return depth;
    }
    

提交回复
热议问题