Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
递归:
public int MaxDepth(TreeNode root)
{
return root==null? 0 : Math.Max(MaxDepth(root.left), MaxDepth(root.right))+1;
}
非递归:
非递归的思路其实就是“一层一层”的向下统计,直到某个节点不含叶节点。
public int MaxDepth(TreeNode root)
{
if (root == null)
return 0;
int count = 0,len;
Queue<TreeNode> stack = new Queue<TreeNode>();
stack.Enqueue(root);
TreeNode node;
while ((len=stack.Count)>0)
{
count++;
for (int i = 0; i < len; i++)
{
node = stack.Dequeue();
if (node.left != null)
stack.Enqueue(node.left);
if (node.right != null)
stack.Enqueue(node.right);
}
}
return count;
}