二叉樹的最近公共祖先

2021-10-07 23:29:40 字數 412 閱讀 3974

//leetcode submit region begin(prohibit modification and deletion)

/**definition for a binary tree node.

public class treenode }*/

class

solution

}

方法的入參是樹根節點,需要找最近公共祖先的兩個節點p和q。

思想是對樹進行深度遍歷,如果在當前的子樹根節點的左右子樹分別能找到p、q的話(左還是右不影響),說明當前的子樹根節點就是 最近公共祖先,如果在左子樹找到p或q,右子樹找不到p或q的話,說明p、q在左子樹,反之在都在右子樹。

難就難在遞迴需要我們逆向思維,先從左子樹深度遍歷走到底,然後一步一步彈棧,去右子樹找。

二叉樹的最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 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,...