解题思路:(C#)
逐层将所有节点放入队列中:当前层所有节点出列,然后推入下一层所有不为null的节点,直到队列为空。
/**
* Definition for a binary tree node.
* public class TreeNode {
* public int val;
* public TreeNode left;
* public TreeNode right;
* public TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int MaxDepth(TreeNode root)
{
int result = 0;
//队列用来放每一层不为null的节点
Queue<TreeNode> queue = new Queue<TreeNode>();
//用来临时存放每次更新queue前的上一层所有节点
Queue<TreeNode> tempQueue = new Queue<TreeNode>();
if (root != null)
{
queue.Enqueue(root);
}
while (queue.Count > 0)
{
while (queue.Count > 0)
{
tempQueue.Enqueue(queue.Dequeue());
}
result++;
while (tempQueue.Count > 0)
{
//tempQueue不为空则将下一层的节点放入队列
var element = tempQueue.Dequeue();
if (element.left != null)
{
queue.Enqueue(element.left);
}
if (element.right != null)
{
queue.Enqueue(element.right);
}
}
}
return result;
}
}