我知道如何找到二叉搜索树的直径。
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。