樹 找到二叉樹中的最大二叉搜尋樹

2021-07-15 00:12:13 字數 937 閱讀 9858

題目

給定一顆二叉樹,已知其中所有節點的值都不一樣,找到含有節點最多的二叉搜尋樹,並返回頭節點。

注:乙個二叉樹的子樹的葉節點必須是該二叉樹的葉節點。

解答:以節點root為頭的樹中,最大的二叉搜尋樹只可能來自以下兩種情況。

1.如果來自root左子樹上的最大st以root.left為頭,來自root右子樹上的最大st以root.right 為頭,且左邊bst的最大值小於root.val,且右邊bst的最小值大於root.val。那麼,

以節點root為根節點的正棵樹都是st。

2.不滿足條件1的話,以root為根的樹的最大st是來自左子樹的最大st和右子樹的最大st中包含節點樹較多的那乙個。

通過以上分析,求解過程如下:

1.整體過程是二叉樹的後序遍歷。

2.用recorder記錄相關資料。

public class solution 

public treenode poseorder(treenode root,int recorder)

treenode left=postorder(root.left,recorder);

int lsize=recorder[0];

int lmax=recorder[1];

int lmin=recorder[2];

treenode right=postorder(root.right,recorder);

int rsize=recorder[0];

int rmax=recorder[1];

int rmin=recorder[2];

if(root.left == left&&root.right == right&&root.val > lmax&&root.val < rmin)

else

else}}

}

找到二叉樹中的最大搜尋二叉樹

題目 給定一顆二叉樹,已知其中所有節點的值都不一樣,找到含有節點最多的二叉搜尋樹,並返回頭節點。注 乙個二叉樹的子樹的葉節點必須是該二叉樹的葉節點。解答 1.後續遍歷 2.每次記錄下最小值,最大值,節總數。如果root左右節點符合,則總數相加後,返回此根節點 否則返回左右節點中節點數最多的節點。輸入...

最大二叉樹

題目大意 總是按照當前陣列或者子陣列中的元素值的最大值作為根節點,依次建立一顆二叉樹。輸入 nums 3 2,1 6,0 5 輸出 6,3,5,null,2,0,null,null,1 解釋 遞迴呼叫如下所示 3,2,1,6,0,5 中的最大值是 6 左邊部分是 3,2,1 右邊部分是 0,5 3,...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...