2 判斷乙個二叉樹是否是二叉搜尋樹(騰訊面試題)

2021-08-18 23:29:20 字數 886 閱讀 8835

1.面試的時候當面試官提出來的時候,我立馬想到的就是基於前序遍歷的遞迴方法。但是這個方法在面試官給說乙個測試用例的時候就徹底傻眼了。

這是乙個典型的反例。這也可能是大家最容易忽略的乙個地方。謹記!

2.我們利用當前節點是左子樹的最大值,是右子樹的最小值,採用基於前序遍歷的遞迴方式。

public class main 

public static boolean search(treenode root, int minvalue, int maxvalue)

public static void main(string args)

}

3.由於二叉搜尋樹在中序遍歷的情況下是乙個嚴格遞增序列,我們可以先通過中序遍歷把節點的值都存起來,然後再進行判斷序列是否是遞增的。
public class main 

public static void main(string args)

}

4.利用中序遍歷的情況下我們只需要把上乙個的值儲存下來就行了,而不需要在開闢新的空間了。

public class main 

public static void main(string args)

}

二叉樹 判斷乙個樹是否是平衡二叉樹

題目 給定乙個二叉樹,判斷其是否是平衡二叉樹。方法一 bool isbalancedtree treenode root bool ltree isbalancedtree root left bool rtree isbalancedtree root right if ltree rtree r...

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

剛開始我想的很簡單,覺得只要遞迴判斷左孩子是否小於根節點 右孩子是否大於根節點就行了 二叉搜尋樹 左孩子 根結點 右孩子 根節點 下面的寫法 錯的!錯的!二叉樹的判斷應該是左子樹的最大值 小於 根節點 右子樹的最小值大於根節點 bool isvalidbst treenode root if roo...

判斷二叉樹是否是平衡二叉樹

二叉樹的節點定義為 public class treenode 二叉樹的深度 根節點到葉節點的最長路徑長度 平衡二叉樹 二叉樹中任一節點的左右子樹的深度相差不超過1 遞迴的方法 如下 public boolean isbalanced treenode root intleft getheight ...