二叉搜尋樹 共同祖先問題

2021-10-09 20:04:08 字數 834 閱讀 6986

一.演算法描述

給定乙個二叉搜尋樹, 找到該樹中兩個指定節點的最近公共祖先。

例如,給定如下二叉搜尋樹:  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 為不同節點且均存在於給定的二叉搜尋樹中。

二.二叉查詢樹:

三.演算法實現

public class mybinarytreetest 

@test

public void lowestcommonancestor() else

}system.out.println(result);

}private listgetpath(mybinarytree.treenode root, mybinarytree.treenode target) else if (target.getdata() < curnode.getdata())

}targetparpath.add(curnode);

return targetparpath;

}}

二叉樹最近共同祖先

從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。求兩個不同結點ch1,ch2的最近共同祖先。第一行 擴充套件先序序列 第二行 ch1,ch2兩個不同結點值,用乙個空格間隔。abc de g f c fb include include include typedef struct n...

二叉樹結點的共同祖先問題

問題描述 假設二叉樹採用二叉鍊錶方式儲存,root指向根結點,p所指結點和q所指結點為二叉樹中的兩個不同結點,且互不成為根到該結點的路徑上的點,程式設計求解距離它們最近的共同祖先。輸入形式 二叉樹的前序和中序遍歷序列,用以建立該二叉樹的鏈式儲存結構 以及二叉樹的兩個結點資料 x 和 y 輸出形式 結...

二叉樹 距離最近的共同祖先

分析總結 問題描述 查詢距離二叉樹中2個結點最近的共同祖先 使用者函式 template class elemtype binarytreenode findnearancient binarytree t,elemtype x,elemtype y 輔助函式 查詢從根結點到元素值為x的結點的路徑 ...