我知道可以编写递归代码来查找最小高度。但是对于一棵非常大的树(例如左侧的百万个节点与右侧的 1 个节点) - 这种方法并不好。所以请让我知道以下代码是否正常,它使用 BFS:-
if (root == null)
{
return 0;
}
Queue<Node> queue = new Queue<Node>();
queue.Enqueue(root);
int min = 0;
while (queue.Count > 0)
{
Node temp = queue.Dequeue();
if (temp.LeftChild == null)
{
return ++min;
}
if (temp.LeftChild != null)
{
++min;
queue.Enqueue(temp.LeftChild);
}
if (temp.RightChild == null)
{
return ++min;
}
if (temp.RightChild != null)
{
++min;
queue.Enqueue(temp.RightChild);
}
}
return 0;
所以对于像这样的树
1
/ \
2 3
/
4
/
6
以上返回 1,(根据 Floor(Log(n))?
谢谢。