初始:
給定乙個二叉搜尋樹, 找到該樹中兩個指定節點的最近公共祖先。
思路:對於二叉搜尋樹其後序遍歷有序,因此若當前節點的值大於兩個節點的值,則說明這兩個節點在當前節點的左子樹中,若當前節點的值小於兩個節點的值,則說明這兩個節點在當前節點的右子樹中。
class solution
if (root.val > p.val && root.val > q.val)
if (root.val < p.val && root.val < q.val)
return root;
}}
高階:
給定乙個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。
class solution
treenode left = lowestcommonancestor(root.left, p, q);
treenode right = lowestcommonancestor(root.right, p, q);
if (left != null && right != null)
if (left != null && right == null) else if (left == null && right != null) else
}}
劍指Offer 68 樹中兩個結點的最低公共祖先
給出乙個二叉樹,輸入兩個樹節點,求它們的最低公共祖先。乙個樹節點的祖先節點包括它本身。注意 輸入的二叉樹不為空 輸入的兩個節點一定不為空,且是二叉樹中的節點 解法一,使用遞迴,若兩個樹節點在根節點的左右子樹上,則公共節點為根節點 若兩個樹節點都在某一子樹上,則公共節點在該子樹上。這個方法遞迴都要查詢...
劍指Offer 68 二叉樹的最近公共祖先
迴圈搜尋 當節點 root 為空時跳出 當 p,q都在 root 的 右子樹 中,則遍歷至 root.right 否則,當 p,q 都在 root 的 左子樹 中,則遍歷至 root.left 否則,說明找到了 最近公共祖先 跳出。返回值 最近公共祖先 root treenode lowestcom...
劍指Offer68 II 二叉樹的最近公共祖先
不能覆蓋p,q其中乙個是另乙個的祖先的情況 class solution else if l r return true 其中一棵子樹找到了p或q,往上層傳遞 else return false 兩棵廢物子樹,都找不到p,q treenode lowestcommonancestor treenod...