如何在二叉搜索树中找到最深层的高度?

时间:2015-05-02 21:56:34

标签: c++ binary-search-tree

例如,给定树:

                                    10
               5                                15
       0             6                    12                    20   // full
-5        2              8                   14          16           22
             4                                              18             24
                                                                              26

函数highestFull(BinaryNodeX<Comparable> *t)返回的值为3,因为最深满级别的高度为3。

1 个答案:

答案 0 :(得分:3)

如果某个节点没有左侧或右侧节点,您就知道最深的完整级别为1 - 节点本身。

如果它有左右节点,则递归并选择较小的节点。

highestFull(BinaryNodeX<Comparable> *t)
{
   if ( ! t->left || ! t->right ) return 1;
   return 1 + std::min( highestFull(t->left), highestFull(t->right) );
}