333 最大BST子樹

2021-10-05 15:56:38 字數 760 閱讀 6149

最大bst子樹

public

class

_333_最大bst子樹

// 返回root為根節點的二叉樹的最大bst子樹資訊

public info getinfo

(treenode root)

else

if(li.root == root.left && li.max < root.val)

if(ri == null)

else

if(ri.root == root.right && ri.min > root.val)

// 以root為根的二叉樹是bst

if(leftbstsize !=-1

&& rightbstsize !=-1

)// 均不為-1,即左右子樹存在,但以root作為根的二叉樹不是bst

// bst可能就是在較矮的子樹中

if(li!=null && ri != null)

return

(li.size > ri.size)

? li :ri;

// 返回li、ri中不為null的那個info

return

(li!= null)

? li:ri;

}private

static

class

info

}}

reference:小碼哥mj

尋找最大子樹

問題描述 給乙個二叉樹,每個節點都是正或負整數,如何找到乙個子樹,它所有節點的和最大?思路 採用自底向上的計算。先計算左右子樹總和值,用左右子樹的總和加上當前節點值,如果當前總和大於最大值,則更新最大值,同時將最大子樹根節點更新為當前根。簡單說,就是後序遍歷。include include usin...

最大子樹和

題目描述 小明對數學飽有興趣,並且是個勤奮好學的學生,總是在課後留在教室向老師請教一些問題。一天他早晨騎車去上課,路上見到乙個老伯正在修剪花花草草,頓時想到了乙個有關修剪花卉的問題。於是當日課後,小明就向老師提出了這個問題 一株奇怪的花卉,上面共連有n 朵花,共有n 1條枝幹將花兒連在一起,並且未修...

緊急疏散(最大子樹)

體育場突然著火了,現場需要緊急疏散,但是過道真的是太窄了,同時只能容許乙個人通過。現在知道了體育場的所有座位分布,座位分布圖是一棵樹,已知每個座位上都坐了乙個人,安全出口在樹的根部,也就是1號結點的位置上。其他節點上的人每秒都能向樹根部前進乙個結點,但是除了安全出口以外,沒有任何乙個結點可以同時容納...