给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
返回它的最大深度 3 。
/**
* 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) {
if(root == null)
{
return 0;
}
else
{
//递归实现,先进入到最深最深的左节点或右节点,然后慢慢加上来
int left = MaxDepth(root.left);
int right = MaxDepth(root.right);
return left > right ? left + 1 : right + 1;
}
}
}我原本的思路是,用一个List来存储每一层的所有节点,然后取出来遍历(清空list),如果不为空就将他们的子节点添加到list中并将深度加1,直到list中的为空为止。
public class Solution {
public int MaxDepth(TreeNode root) {
List<TreeNode> list = new List<TreeNode>();
list.Add(root);
int height = 0;
while(list.Count > 0)
{
bool isHeight = false;
TreeNode[] all = list.ToArray();
list.Clear();
foreach(TreeNode node in all)
{
if(node != null)
{
isHeight = true;
list.Add(node.left);
list.Add(node.right);
}
}
if(isHeight)
{
height++;
}
}
return height;
}
}