11 求二叉樹中節點的最大距離

2021-06-27 19:35:50 字數 1007 閱讀 6191

題目:如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,

我們姑且定義"距離"為兩節點之間邊的個數。

寫乙個程式,

求一棵二叉樹中相距最遠的兩個節點之間的距離。

分析:由題意可知這是一棵二叉樹,會出現兩種情況:(1)最長的路徑經過當前節點;(2)最長的路徑每經過當前節點。所以只需要遞迴地求出經過每個節點的最長路徑。具體看**實現:

#includeusing namespace std;

typedef struct nodenode,bstreenode;

int nmax;

void addbstreenode(bstreenode *&pcurrent, int value)//傳的是指標的引用,建立二叉排序樹

if(pcurrent->value>value)

if(pcurrent->valueright,value);

return ;

} cout<

if(root->right!=null)

sum=leftvalue+rightvalue;

if(nmaxrightvalue?leftvalue:rightvalue;

}int main()

{ nmax=0;

node *proot=null;

addbstreenode(proot,10);

addbstreenode(proot,6);

addbstreenode(proot,14);

addbstreenode(proot,4);

addbstreenode(proot,8);

addbstreenode(proot,12);

addbstreenode(proot,16);

addbstreenode(proot,26);

addbstreenode(proot,1);

// cout

11 求二叉樹中節點的最大距離

如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,我們姑且定義 距離 為兩節點之間邊的個數。寫乙個程式,求一棵二叉樹中相距最遠的兩個節點之間的距離。這裡可以求節點的左右子樹的高度,然後可以得到一該幾點為根的最長路徑。遍歷書的每乙個節點,並在遍歷過程中用n記錄最大值!include usin...

求二叉樹中節點的最大距離

遞迴求解,最大距離總是在一下兩種情況產生 情況1 最大路徑經過root 這個例子中,最長路徑經過root,其距離等於左子樹的高度 1 右子樹的高度 1 在這種情況下 如果只有左子樹,右子樹為空 最大距離 左子樹的高度 1 如果只有右子樹,左子樹為空 最大距離 右子樹的高度 1 如果既有右子樹,又有左...

求二叉樹中節點的最大距離

2010 10 26 16 03 37 分類 資料結構與演算法 標籤 proot 節點pleft pright nmaxleft 字型大小 大中小訂閱 如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,我們姑且定義 距離 為兩個節點之間邊的個數。寫乙個程式求一顆二叉樹中相距最遠的兩個節點之...