gpt4 book ai didi

c++ - 打印 BST 的 Diameter 对应的节点组成的路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:09 24 4
gpt4 key购买 nike

我知道如何找到 BST 的直径。

int diameter(struct node * tree)
{

if (tree == 0)
return 0;


int lheight = height(tree->left);
int rheight = height(tree->right);

int ldiameter = diameter(tree->left);
int rdiameter = diameter(tree->right);

return max(lheight + rheight + 1, max(ldiameter, rdiameter));
}




int height(struct node* node)
{

if(node == NULL)
return 0;


return 1 + max(height(node->left), height(node->right));
}

我应该在代码中进行哪些更改以打印路径,即从一个叶节点到直径的另一个叶节点的序列中对应于树直径的节点。

例如:-

                     8
/ \
1 12
\ /
5 9
/ \
4 7
/
6

输出应该是 6 7 5 1 8 12 9

最佳答案

下面是一个寻找二叉树最大深度的算法:

  1. 假设有一个名为 max_height 的变量。
  2. 初始化为零。
  3. 假设有一个名为depth 的变量。
  4. depth 初始化为零。
  5. 遍历子树时,增加深度
  6. 如果depth大于max_height,设置max_height深度
  7. 从子树返回时,递减depth

这里假设读者知道如何遍历二叉树;这是另一篇文章的主题。

关于c++ - 打印 BST 的 Diameter 对应的节点组成的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13456952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com