判斷二叉搜尋樹

2021-09-01 09:23:22 字數 900 閱讀 9875

二叉查詢樹(binary search tree),(又:二叉搜尋樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。

判斷某棵樹是否為二叉搜尋樹

單純判斷每個結點比左孩子大比右孩子小是不對的。如圖:

15推翻了這種方法。

思路:1)可以根據定義判斷,遞迴進行,如果左右子樹都為搜尋二叉樹,且左子樹最大值小於根,右子樹最小值大於根。成立。

2)根據定義,中序遍歷為遞增序列,我們中序遍歷後判斷是否遞增即可。

3)我們可以在中序遍歷過程中判斷之前節點和當前結點的關係,不符合直接返回false即可。

4)進一步通過morris遍歷優化

morris遍歷:

public static class node 

} public static boolean isbst(node head)

boolean res = true;

node pre = null;

node cur1 = head;

node cur2 = null;

while (cur1 != null)

if (cur2.right == null) else

}if (pre != null && pre.value > cur1.value)

pre = cur1;

cur1 = cur1.right;

} return res;

}

判斷二叉搜尋樹

判斷是否為二叉搜尋樹有兩種方法 1.遞迴 val表示值 left是左子樹 right是右子樹 lower 下界 比最小值還小 upper 上界 比最大值還大 class solution bool isvalidbst treenode root 2.中序遍歷 由二叉搜尋樹的性質,中序遍歷序列是遞增...

二叉樹 判斷相同二叉搜尋樹

給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。方法 為每個序列建樹,並利用每棵樹的中序遍歷判斷相同 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...