1. 程式人生 > >劍指offer-38:二叉樹的深度

劍指offer-38:二叉樹的深度

題目描述

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

思路

遞迴和迴圈

程式碼

public class Solution38 {


    public int TreeDepth(TreeNode root) {

        if (root == null)
            return 0;

        int left = TreeDepth(root.left);
        int right = TreeDepth(root.right);
        return
left > right ? left + 1 : right + 1; // Queue<TreeNode> queue = new LinkedList<>(); // queue.offer(root); // int count = 0, depth = 0, nextCount = 1; // while (!queue.isEmpty()) { // TreeNode node = queue.poll(); // count ++; // if (node.left != null) {
// queue.offer(node.left); // } // if (node.right != null) { // queue.offer(node.right); // } // if (count == nextCount) { // nextCount = queue.size(); // count = 0; // depth++; // } // }
// return depth; } public static void main(String[] args) { TreeNode tree = BeanUtil.createCompleteBinaryTree(new int[]{1, 3, 2, 5, 6, 34, 13, 54, 23, 31, 45, 23, 91, 22, 33, 44}); BeanUtil.printTreeStructure(tree, tree.val, 0); BeanUtil.print(new Solution38().TreeDepth(tree)); } }