我已經實現了查找二叉樹的最大和最小元素的函數。但是我得到了錯誤的輸出。二叉樹的最小元素
函數用於查找二叉樹的最大值。
int FindMax(struct TreeNode *bt)
{
//get the maximum value of the binary tree...
int max;
//get the maximum of the left sub-tree.
int left;
//get the maximum of the right sub-tree.
int right;
//get the root of the current node.
int root;
if(bt!=NULL)
{
root=bt->data;
//Call the left tree recursively....
left=FindMax(bt->leftChild);
//Call the right tree recursively...
right=FindMax(bt->rightChild);
if(left > right)
{
max=left;
}
else
{
max=right;
}
if(max < root)
{
max=root;
}
}
return max;
}
查找二叉樹最小值的函數。
int FindMin(struct TreeNode *bt)
{
//get the minimum value of the binary tree...
int min;
//get the minimum of the left sub-tree.
int left;
//get the minimum of the right sub-tree.
int right;
//get the root of the current node.
int root;
if(bt!=NULL)
{
root=bt->data;
//Call the left tree recursively....
left=FindMin(bt->leftChild);
//Call the right tree recursively...
right=FindMin(bt->rightChild);
if(left < right)
{
min=left;
}
else
{
min=right;
}
if(min > root)
{
min=root;
}
}
return min;
}
輸出: 樹32767
樹0
不是樹不平衡。但是,感謝提供檢查和幫助初始化最小。 –
即使你的樹不平衡,在絕對最壞的情況下(你的樹是一個退化的反向列表),這仍然是一個改進,或者至少是相等的,並且獎勵是它應該工作。 – paddy
這是不正確的。這對於二叉搜索樹而不是二叉樹是正確的。二叉搜索樹的組織方式可以讓您遍歷最左邊的節點來獲取最小值。這在二叉樹中並不一定是真實的。 – ohbrobig