思路一:非遞迴方法
1. 找到兩個節點的路徑的逆序鍊錶,將題轉換成兩個鍊錶第乙個公共節點的問題。
1.2 兩個鍊錶求第乙個公共節點
class2. 找到兩個節點的路徑,將其儲存到兩個陣列中,遍歷兩個陣列,返回兩個陣列第一次不相等的上乙個節點。solution
return
node1;}};
思路二:遞迴方法
def參考solution(root, p, q):
if root == none or p == root or q ==root:
return
root
left =solution(root.left, p, q)
right =solution(root.right, p, q)
if left and
right:
return
root
ifnot left and
notright:
return
none
ifnot left and
right:
return
right
ifnot right and
left:
return left
二叉樹的最近公共祖先
給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 思路 剛開始使用boolean來判斷要查詢的兩節點在左右孩子上,後面修改為使用treenode與null判斷兩節點位置 1 分別向左孩子和右孩子遞迴。2 若當...
二叉樹的最近公共祖先
輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 4 輸出 5 法1 分別找出根節點到兩個節點的路徑,則最後乙個公共節點就是最低公共祖先。法2 public treen...
二叉樹的最近公共祖先
例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 示例 1 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 解釋 節點 5 和節點 1 的最近公共祖先是節點 3。示例 2 輸入 root 3,5,1,6,2,0,...