我知道如何找到 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