查詢排序二叉樹的最小值,最大值,Next指標,並逆序列印
給出一個排序二叉樹,求它的最小值,最大值,Next域
思路:一個排序二叉樹,如果要將它從小到大排序,只需要按照中序遍歷規則列印即可。那麼它的第一個元素就是它的最小值,而最後一個元素就是他的最大值。
最小值:
BstNode* First(BtNode* ptr)
{
while(ptr!=NULL&&ptr->left!=NULL)
{
ptr=ptr->left;
}
return ptr;
}
最大值:
BstNode* Last(BstNode* ptr)
{
while(ptr!=NULL&&ptr->right!=NULL)
{
ptr=ptr->right;
}
return ptr;
}
Next域:
BstNode* Next(BstNode* ptr)
{
if(ptr==NULL)//空樹,不做操作
{
return NULL;
}
if(ptr->right!=NULL)
{
//如果ptr的右孩子不為空,那麼就把它的右孩子看作另一顆樹的根節點,找到它的最小值,這個最小值就是ptr的下一個元素
return First(ptr->right);
}
else{
BstNode* pa=ptr->parent;//定義一個pa指向ptr的雙親
while(pa!=NULL&&pa->left!=ptr)//當他的雙親不為空並且雙親的左孩子不等於ptr時
{
ptr=pa;//ptr指向它的雙親
pa=pa->parent;//雙親指向它的雙親,一直到根節點為止
}
return pa;//當它的雙親不為空且雙親的左孩子等於ptr時,找到這個節點
}
}
利用上面的函式升序列印這棵樹
void NiceInOrder(BSTree& myt)
{
for(BstNode* p=First(myt.root);p!=NULL;p=Next(p))
{
cout<<p->data<<" ";
}
cout<<endl;
}
降序列印這棵樹
BstNode* Prev(BstNode* ptr)
{
if(ptr==NULL)
{
return NULL;
}
if(ptr->left!=NULL)
{
ptr=ptr->left;
}
else
{
BstNode* pa=ptr->parent;
while(pa!=NULL&&pa->right!=ptr)
{
ptr=pa;
pa=pa->parent;
}
return pa;
}
}
降序列印也就是逆序列印
void ResNiceInOrder(BstNode& myt)
{
for(BstNode* p=Last(Myt.root);p!=NULL;p=Prev(p))
{
cout<<p->data;
}
cout<<endl;
}
相關文章
- 二叉查詢樹(二叉排序樹)排序
- 二叉查詢樹【二叉排序樹】構建和查詢演算法 PHP 版排序演算法PHP
- 二叉排序樹查詢,插入,刪除排序
- 查詢|有序表折半查詢判定樹|二叉排序樹|3階B-樹排序
- 智慧指標和二叉樹(3):圖解查詢和刪除指標二叉樹圖解
- 五大經典查詢(1)_二叉排序樹查詢排序
- #查詢演算法#【2】二叉排序樹演算法排序
- 二叉樹 & 二叉查詢樹二叉樹
- 查詢二叉樹二叉樹
- 二叉查詢樹
- 二叉查詢樹的插入刪除查詢
- 手擼二叉樹——二叉查詢樹二叉樹
- [劍指offer] 把二叉樹列印成多行二叉樹
- 【劍指offer】5.二叉樹的映象和列印二叉樹
- 二叉查詢樹的個數
- java陣列回顧---線性查詢最大值最小值---二分查詢Java陣列
- 《劍指offer》:[60]把二叉樹列印成多行二叉樹
- 【劍指offer】從上向下列印二叉樹二叉樹
- 平衡二叉查詢樹:紅黑樹
- 二叉查詢樹和笛卡爾樹
- LeetCode 劍指offer——從上到下列印二叉樹 II、從上到下列印二叉樹 IIILeetCode二叉樹
- 二叉樹路徑查詢二叉樹
- 劍指offer(C++)——把二叉樹列印成多行C++二叉樹
- 第三章:查詢與排序(下)----------- 3.15基礎學習_樹、二叉樹、堆排序排序二叉樹
- Python 樹表查詢_千樹萬樹梨花開,忽如一夜春風來(二叉排序樹、平衡二叉樹)Python排序二叉樹
- Amazing tree —— 二叉查詢樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 二叉查詢樹的實現——C++C++
- 5分鐘瞭解二叉樹之二叉查詢樹二叉樹
- 二叉查詢樹(查詢、插入、刪除)——C語言C語言
- 劍指offer--把二叉樹列印成多行(C++)二叉樹C++
- 劍指offer——從上往下列印二叉樹C++二叉樹C++
- 《劍指offer》:[61]按之字形順序列印二叉樹二叉樹
- 折半查詢排序樹畫圖和排序
- 二叉排序樹排序
- 排序二叉樹和平衡二叉樹排序二叉樹
- 二叉查詢樹概念及實現
- C#實現二叉查詢樹C#