思路:
統計層數,一開始想能不能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; } }
這兩個的時間複雜度應該是一樣的,不知道爲什麼迭代出來時間會長一些