最小の高さを見つけるために再帰的なコードを書くことができることを私は知っています。しかし、非常に大きなツリー(左側に100万ノード、右側に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))に従って?
ありがとう。