劍指offer二叉搜尋樹的最近公共祖先

2021-10-25 07:30:59 字數 937 閱讀 8164

給定乙個二叉搜尋樹, 找到該樹中兩個指定節點的最近公共祖先。

最近公共祖先表示為乙個結點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(乙個節點也可以是它自己的祖先)。」

例如,給定如下二叉搜尋樹: root = [6,2,8,0,4,7,9,null,null,3,5]

示例 1:

輸入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8

輸出: 6

解釋: 節點 2 和節點 8 的最近公共祖先是 6。

示例 2:

輸入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4

輸出: 2

解釋: 節點 2 和節點 4 的最近公共祖先是 2, 因為根據定義最近公共祖先節點可以為節點本身。

class

solution

return root;

}}

class

solution

else

if(p.val>root.val&& q.val>root.val)

else

return cur;

}}

優化:若可保證 p.val < q.val,則在迴圈中可減少判斷條件。這種簡單的優化很重要

class

solution

while

(root != null)

return root;

}}

劍指Offer 二叉搜尋樹的最近公共祖先

給定乙個二叉搜尋樹,找到該樹中兩個指定節點的最近公共祖先。示例 1 輸入 root 6 2,8 0,4 7,9 null,null,3,5 p 2,q 8輸出 6 解釋 節點 2 和節點 8 的最近公共祖先是 6。示例 2 輸入 root 6 2,8 0,4 7,9 null,null,3,5 p ...

劍指offer 二叉樹 二叉樹搜尋樹

package bst import j a.util.public class bst if pre.length 0 in.length 0 treenode root new treenode pre 0 for int i 0 i in.length i return root 判斷給定陣列...

劍指Offer 二叉搜尋樹的後序遍歷

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。author zy date 2017年10月13日 下午9 34 21 decription 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如...