如何快速的查詢到二叉樹中任意兩個節點的最底層的公共父節點

2021-04-19 06:06:07 字數 1428 閱讀 5852

1樓:匿名使用者

如果二叉樹是三叉連結串列儲存或者順序儲存,從2個結點向著根走,可以很快找到

如果是二叉連結串列儲存,可以使用非遞迴的後序遍歷,分別遍歷到這2個結點時,比較一下當時棧裡的情況就可以了

一棵樹,怎樣找到n個節點的公共父節點,最快的方法

2樓:

insertitem() ; 如果是跟節點 控制代碼傳空即可

如何計算兩個節點的公共父節點到兩個節點的最小距離

3樓:最愛秋天的傳說

由於有父節點指標,這道題目的難度一下子就降低了許多。

思路一:我們首先找到兩個節點的高度差,然後從較靠近根結點的一層開始向上找,若父節點為同一節點則該節點為解。

int getheight(treenode *node)return height;

}treenode* lowestcommonancestor(treenode* first,treenode* second)

} else

}while (first != second)return first;

}思路二:若允許浪費空間,那麼可以用兩個stack來儲存從first和second到根結點的各個節點,然後出棧時比較地址是否一致,最後一個地址一致的節點為解。

怎麼得到二叉樹的父節點

4樓:匿名使用者

那你定義節點的時候需要有指向父節點的指標

要不然就只有遞迴遍歷找了

5樓:悠藍天

bintnode* parent(bintree t, bintnode* n) else}

6樓:匿名使用者

用那個 遞迴方法

7樓:牛婉叢子舒

定義節點

候需要指向父節點指標要

遞迴遍歷找

8樓:曲荏海思菱

你要問的應該是如何得到t的節點n的父節點吧?

9樓:匿名使用者

|void parent( *t)}}}

二叉樹兩個結點的最近相同父節點怎麼求,有什麼演算法

10樓:匿名使用者

1. 面對這樣的場景,選擇父親孩子結構的方式組建二叉樹就很容易了。

2. 如果是普通的左右結內點結構組建的二叉樹容,那就遍歷吧。

int getfather(treenode *root, treenode *a, treenode *b)

}if (root == a || root == b)return 1 + num;

else

return num;}

若某完全二叉樹的深度為h,則該完全二叉樹中至少有多少個結點

2 h 1 1 1 2 h 1 前 n 1 層滿,第h層只有一結點 你沒錯,錯的是印刷,2h 1 1 明顯是 2 h 1 1 若一棵完全二叉樹有500個結點,則該二叉樹的深度為多少 深度為9。由二叉樹性質 具有n個節點的完全二叉樹的深度為 log2 內n 1 log2 500 8 8 1 9 比如 ...

設一棵完全二叉樹共有結點,則在該二叉樹中的葉子結點數

b 350 首先你得知bai 道什麼叫完全二du叉zhi樹!完全二叉樹 complete binary tree 若設二叉樹的高度為daoh,除第內 h 層外,其它各層 1 容h 1 的結點數都達到最大個數,第 h 層所有的節點都連續集中在最左邊,這就是完全二叉樹。完全二叉樹是由滿二叉樹而引出來的。...

已經二叉樹有葉子結點,則該二叉樹的總結點至少是

從根結點 n 0 開始,每層的最大結點數是 2 n由2 n 50 n 6 所以該二叉樹最少有6層 根結點算0層,最後一層有50個結點 所以總結點數是 2 0 2 1 2 2 2 3 2 4 2 5 50 113 完全二叉樹的形式總結點最少,2 5 50 2 6 所以子結點分佈在第6 7層,設第六層n...