找到二叉树中的最大搜索子树
生活随笔
收集整理的這篇文章主要介紹了
找到二叉树中的最大搜索子树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:?
給定一棵二叉樹的頭節點head,已知其中所有節點的值都不一樣,找到含有節點最多的搜索二叉樹,并返回這棵子樹的頭節點。(注意子樹的概念)
基本思路:?
以節點node為頭的樹中,最大的搜索二叉樹只可能來自以下的兩種情況:
node的左子樹和右子樹都是搜索二叉樹,并且左子樹的最大值小于node,右子樹的最小值大于node,此時,以node為頭的整棵樹都是搜索二叉樹。
如果不滿足情況1,那么最大的搜索二叉樹來自node左子樹的最大搜索二叉子樹或者node右子樹的最大搜索二叉子樹
整體過程是二叉樹的后序遍歷,
過程如下:
遍歷到當前節點cur時,先遍歷左子樹收集四個信息,分別是左子樹上最大搜索二叉樹的頭節點(lBST),節點數(lSize),最大值(lMax)和最小值(lMin)。再遍歷右子樹,也收集四個信息rBST, rSize, rMax, rMin。
根據步驟一收集的信息,判斷是否滿足情況1,如果滿足,返回cur。如果不滿足,返回lBST, rBST中最大的一個。
?
總結
以上是生活随笔為你收集整理的找到二叉树中的最大搜索子树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 未排序数组中累加和为给定值的最长子数组系
- 下一篇: 二叉树节点间的最大距离