标签:二叉树的宽度和深度
深度:
int length(BiTree t)
{
int depth1 = 0;
int depth2 = 0;
if(t == null ) return 0;
//右子树的深度
depth1 = length(t.right);
//左子树的深度
depth2 = length(t.left);
if(depth1>depth2)
return depth1+1;
else
return depth2+1;
}宽度:
int getMaxWidth(TreeNode root)
{
if (root == null)
return 0;
Queue<TreeNode> queue = new ArrayDeque<TreeNode>();
int maxWitdth = 1; // 最大宽度
queue.add(root); // 入队
while (true)
{
int len = queue.size(); // 当前层的节点个数
if (len == 0)
break;
while (len > 0)
{
// 如果当前层,还有节点
TreeNode t = queue.pop();
len--;
if (t.left != null)
queue.push(t.left); // 下一层节点入队
if (t.right != null)
queue.add(t.right);// 下一层节点入队
}
maxWitdth = Math.max(maxWitdth, queue.size());
}
return maxWitdth;
}本文出自 “小止” 博客,请务必保留此出处http://10541556.blog.51cto.com/10531556/1843592
标签:二叉树的宽度和深度
原文地址:http://10541556.blog.51cto.com/10531556/1843592