返回树的深度。
递归:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int maxDepth(TreeNode *root) { if (!root) return 0; int l = maxDepth(root -> left); int r = maxDepth(root -> right); return max(l + 1, r + 1); } };
非递归的解法:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
public int maxDepth(TreeNode root) { if(root == null) return 0; int depth = 0; LinkedList<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); int curNum = 1; //num of nodes left in current level int nextNum = 0; //num of nodes in next level while(!queue.isEmpty()){ TreeNode n = queue.poll(); curNum--; if(n.left!=null){ queue.add(n.left); nextNum++; } if(n.right!=null){ queue.add(n.right); nextNum++; } if(curNum == 0){ curNum = nextNum; nextNum = 0; depth++; } } return depth; }