劍指 Offer 55 - I. 二叉樹的深度

 

 

思路:

 

 

 

統計層數,一開始想能不能dfs做,但怎麼想感覺都不好做(腦袋裏還是遍歷的想法),然後自然就想到層序遍歷,然後每次經過一層加一就行

class Solution {
    public int maxDepth(TreeNode root) {
        if(root==null)
        {return 0;}
        Queue<TreeNode> queue=new LinkedList<>();
        int result=0;
        queue.add(root);
        while(queue.size()!=0)
        {
            result++;
            int count=queue.size();
            for(int i=0;i<count;i++)
            {
                root=queue.poll();
                if(root.left!=null)
                {queue.add(root.left);}
                if(root.right!=null)
                {queue.add(root.right);}
            }
        }
        return result;

    }
}

 

接着看到了遞歸寫法

其實用遞歸思考這道題目不需要想這是什麼遍歷(其實是後序),邏輯已經足夠清晰了:

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

 

這兩個的時間複雜度應該是一樣的,不知道爲什麼迭代出來時間會長一些

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章