最大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號結點的位置上。其他節點上的人每秒都能向樹根部前進乙個結點,但是除了安全出口以外,沒有任何乙個結點可以同時容納...