分治遞迴:
在二叉樹中尋找節點p,q:要麼p或q為根節點,在這種情況下,根節點即為最近公共祖先。要麼p,q 分布在左子樹或右子樹中。若p,q分別分布在左右子樹,根節點即為最近公共祖先,若p,q都處於左子樹或右子樹中,則處理物件變為根的左子樹或右子樹,對左子樹或右子樹遞迴求解。
遞迴函式的功能為尋找節點p,q的最近公共祖先,若根節點即為p或q,直接返回根節點,否則對左子樹和右子樹分別呼叫遞迴函式。若對左子樹呼叫遞迴函式的返回值為空指標,表明p,q均在右子樹中,返回對右子樹呼叫遞迴函式的返回值(處理物件變為右子樹,因為p,q均在右子樹中)。若對右子樹呼叫遞迴函式的返回值為空指標,表明p,q均在左子樹中,返回對左子樹呼叫遞迴函式的返回值(處理物件變為左子樹,因為p,q均在左子樹中)。若對左右子樹呼叫遞迴函式的返回值均不為空,表明p,q分別處於左右子樹中,此時根節點即為最近公共祖先,返回根節點。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
};
二叉樹的最近公共祖先
給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 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,...