判斷是否為二叉搜尋樹有兩種方法:
1.遞迴
//val表示值
//left是左子樹
//right是右子樹
//lower 下界 比最小值還小
//upper 上界 比最大值還大
class solution
bool isvalidbst(treenode* root)
};
2.中序遍歷
由二叉搜尋樹的性質,中序遍歷序列是遞增的。
//中序遍歷是公升序
class solution
root = stack.top();
stack.pop();
// 如果中序遍歷得到的節點的值小於等於前乙個 inorder,說明不是二叉搜尋樹
if (root -> val <= inorder)
return false;
inorder = root -> val;
root = root -> right;
}return true;
}};
從最左的孩子開始,每次top和pop遍歷元素。
兩個演算法時間複雜度和空間複雜度都是o(n)
判斷二叉搜尋樹
二叉查詢樹 binary search tree 又 二叉搜尋樹,二叉排序樹 它或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為二叉排序樹。判斷某棵樹是否為二...
二叉樹 判斷相同二叉搜尋樹
給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。方法 為每個序列建樹,並利用每棵樹的中序遍歷判斷相同 inclu...
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...