判斷二叉搜尋樹

2021-10-24 05:02:02 字數 645 閱讀 1717

判斷是否為二叉搜尋樹有兩種方法:

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...