判斷某棵二叉樹是否二叉排序樹
這是我首先想到的演算法:
bool Judge(PBinTree pbt)
{
PBinTreeNode pLeft, pRight;
bool bLeft = false, bRight=false, bRootl=false, bRootr=false;
if(pbt == NULL)
return true;
// 判斷根節點
pLeft = pbt->left;
pRight = pbt->right;
if(pLeft && pLeft->data <= pbt->data)
{
bRootl = true;
}
else
{
return false;
}
if(pRight && pRight->data >= pbt->data)
{
bRootr = true;
}
else
{
return false;
}
// 判斷左右子樹
bLeft = Judge(pLeft);
bRight = Judge(pRight);
// 同時滿足條件才叫二叉排序樹
return( bLeft && bRight && bRootl && bRootr);
}
但是不能處理
400
200 600
100 900 500 700
這樣的情況
應該是這樣的演算法
typedef struct node{
int data;
struct node *left, *right;
}NODE;
int judge(NODE *p, int leftbound, int rightbound) {
if (p==NULL) return 1;
if (p-> data < leftbound || p-> data > rightbound) return 0;//不要等號
if (!judge(p-> left,leftbound,p-> data)) return 0;
if (!judge(p-> right, p-> data,rightbound)) return 0;
return 1;
}
根值為value, 則左子樹值都小於根, 右子樹值大於根. 即左子樹值 (-maxint, value) 範圍內, 右子樹值在(value, maxint)範圍內.
呼叫為 judge(root,-maxint,maxint)
相關文章
- 如何判斷一棵樹是否是二叉平衡樹~
- 判斷二叉樹是否為滿二叉樹二叉樹
- 【資料結構虛擬碼】設計判斷一棵二叉樹是否是二叉排序樹的演算法資料結構二叉樹排序演算法
- 遞迴判斷是否二叉平衡樹遞迴
- LC49判斷二叉樹是否相等二叉樹
- LeetCode題解(Offer26):判斷二叉樹A是否為二叉樹B的子樹(Python)LeetCode二叉樹Python
- 怎樣推斷一棵二叉樹是全然二叉樹二叉樹
- 【C++】判斷一顆二叉樹是否對稱C++二叉樹
- 刷題系列 - Python判斷是否映象對稱二叉樹Python二叉樹
- 排序二叉樹和平衡二叉樹排序二叉樹
- 採用層次遍歷判斷二叉樹為完全二叉樹二叉樹
- [Python手撕]判斷平衡二叉樹Python二叉樹
- 是否同一棵二叉搜尋樹(25 分)
- 判斷序列是否是二叉搜尋樹的後續遍歷
- [Python手撕]判斷二叉搜尋樹Python
- LeetCode題解(Offer28):判斷二叉樹是否左右對稱(Python)LeetCode二叉樹Python
- js實現完全排序二叉樹、二叉搜尋樹JS排序二叉樹
- JZ79 判斷是不是平衡二叉樹二叉樹
- 二叉排序樹 oj 2482排序
- js之排序二叉樹JS排序二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 平衡二叉樹(AVL樹)和 二叉排序樹轉化為平衡二叉樹 及C語言實現二叉樹排序C語言
- 如何直觀形象地樹狀列印一棵二叉樹?二叉樹
- 推斷二叉樹(進階)二叉樹
- 二叉樹(順序儲存二叉樹,線索化二叉樹)二叉樹
- 二叉排序樹BST及CRUD操作排序
- 二叉樹排序樹的建立,遍歷和刪除二叉樹排序
- 手擼二叉樹——AVL平衡二叉樹二叉樹
- 手擼二叉樹——二叉查詢樹二叉樹
- 資料結構之樹結構概述(含滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹、紅黑樹、B-樹、B+樹、B*樹)資料結構二叉樹
- 二叉查詢樹【二叉排序樹】構建和查詢演算法 PHP 版排序演算法PHP
- 二叉樹二叉樹
- Python 樹表查詢_千樹萬樹梨花開,忽如一夜春風來(二叉排序樹、平衡二叉樹)Python排序二叉樹
- 使用javascript實現排序二叉樹(2)JavaScript排序二叉樹
- 使用javascript實現排序二叉樹(1)JavaScript排序二叉樹
- Java-二叉排序樹的刪除Java排序
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- 刷題系類 - Python判斷二叉樹是否存在一條路徑滿足和值要求Python二叉樹