【題目】給定一棵二叉樹的頭節點head,已知其中所有節點的值都不一樣,找到含有節點最多的搜尋二叉子樹,並返回這棵子樹的頭節點。
public
class
biggestsubbstintree
}public
static
class
returndata
}public
static returndata process
(node head)
returndata leftinfo =
process
(head.left)
; returndata rightinfo =
process
(head.right)
;int includeitself =0;
if(leftinfo.head == head.left && rightinfo.head == head.right && head.value > leftinfo.max
&& head.value < rightinfo.min)
int p1 = leftinfo.size;
int p2 = rightinfo.size;
int maxsize = math.
max(math.
max(p1, p2)
, includeitself)
; node maxhead = p1 > p2 ? leftinfo.head : rightinfo.head;
if(maxsize == includeitself)
return
newreturndata
(maxsize, maxhead, math.
min(math.
min(leftinfo.min, rightinfo.min)
, head.value)
, math.
max(math.
min(leftinfo.min, rightinfo.min)
, head.value));
}}
找到二叉樹中的最大搜尋二叉子樹
題目 找到二叉樹中的最大搜尋二叉子樹 程式設計師 面試指南 第37題 p121 難度 尉 書上原話 本題涉及二叉樹面試題中乙個很常見的套路,也是全書的乙個重要內容 可見其重要性。這個套路的名字叫做樹形dp套路。樹形dp套路使用前提 如果題目求解目標是s規則,則求解流程可以定成以每乙個節點為頭結點的子...
二叉樹問題 找到二叉樹中的最大搜尋二叉子樹
題目 給定一棵二叉樹的頭節點head,已知其中所有節點的值都不一樣,找到含有節點最多的搜尋二叉樹,並返回這棵子樹的頭節點。注意子樹的概念 基本思路 以節點node為頭的樹中,最大的搜尋二叉樹只可能來自以下的兩種情況 node的左子樹和右子樹都是搜尋二叉樹,並且左子樹的最大值小於node,右子樹的最小...
找到二叉樹中的最大搜尋二叉樹
題目 給定一顆二叉樹,已知其中所有節點的值都不一樣,找到含有節點最多的二叉搜尋樹,並返回頭節點。注 乙個二叉樹的子樹的葉節點必須是該二叉樹的葉節點。解答 1.後續遍歷 2.每次記錄下最小值,最大值,節總數。如果root左右節點符合,則總數相加後,返回此根節點 否則返回左右節點中節點數最多的節點。輸入...