給定乙個二叉搜尋樹, 找到該樹中兩個指定節點的最近公共祖先。
例如,給定如下二叉搜尋樹: 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, 因為根據定義最近公共祖先節點可以為節點本身。
說明:所有節點的值都是唯一的。
p、q 為不同節點且均存在於給定的二叉搜尋樹中。
題解:因為是二叉樹搜尋樹的資料大小都已經排好序了,比根節點小的在左邊,比根節點大的在右邊。
1.判斷 p和q是否為父子節點,是的話直接返回父節點
2.根據p和q與根節點值的大小比較,
1)如果都比根節點小,就遞迴根節點的左子樹,
2)如果都比根節點大,就遞迴根節點的右子樹
3)如果乙個比根節點大,乙個小,表示p和q分散在根節點的左右兩側,直接返回根節點
/**
* definition for a binary tree node.
* struct treenode ;
*/struct treenode* lowestcommonancestor(struct treenode* root, struct treenode* p, struct treenode* q)
else if(q->left == p || q->right == p) //判斷q為父節點
else
}
235 二叉搜尋樹的最近公共祖先
給定乙個二叉搜尋樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉搜尋樹 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 的最近公共祖先...
235 二叉搜尋樹的最近公共祖先
題目 解題思路 遞迴,二叉搜尋樹兩個點 二叉搜尋樹 二叉查詢樹,主要特點是,根節點比左孩子大,比右孩子小,即左小右大根中間。definition for a binary tree node.function treenode val param root param p param q retur...
235 二叉搜尋樹的最近公共祖先
給定乙個二叉搜尋樹,找到該樹中兩個指定節點的最近公共祖先。公共祖先肯定在pq之間,由於pq不知道誰先所以先判斷一下。class solution object deflowestcommonancestor self,root,p,q type root treenode type p treeno...