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

2021-08-21 20:14:44 字數 1105 閱讀 3901

問題:將二叉樹視為乙個圖,父子之間的連線視為邊,「距離」定義為兩節點之間邊的個數。

思路:求左子樹的最深節點,求右子樹的最深節點,記錄其左子樹和右子樹的最大距離

程式實現:

#include #include#includeusing namespace std;

typedef struct btree

*pbtree,btree;

struct resmaxdis

;//建立一棵排序二叉樹

pbtree createtree(pbtree root,int val)

while(root!=null)

}if(pback->num>val)

pback->lchild=newnode;

else

pback->rchild=newnode;

return pback;

}}//遞迴實現先序遍歷

void preorder(pbtree root)

//遞迴實現中序遍歷

void inorder(pbtree root)

//遞迴實現後序遍歷

void postorder(pbtree root)

resmaxdis getmaxdis(pbtree root)

; //為空深度為-1,是為了使得只有乙個節點時深度為0

coutresmaxdis rdis=getmaxdis(root->rchild);

resmaxdis res;

res.max_high=max(ldis.max_high+1,rdis.max_high+1);

res.max_dis=max(max(ldis.max_dis,rdis.max_dis),ldis.max_high+rdis.max_high+2);

cout《輸出結果:

遞迴實現

先序遍歷:

6 1 2 3 4 5 7 8 9 10

中序遍歷:

1 2 3 4 5 6 7 8 9 10

後序遍歷:

5 4 3 2 1 10 9 8 7 6

***************************

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

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

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

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

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

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

如果我們把二叉樹看成乙個圖,父子之間的連線看成,姑且定義 距離 為兩個之間邊的個數。求一顆二叉樹中相距最遠兩個點之間的距離。struct node bittree int nmaxlen 0 void findmaxlen node proot if proot pleft null if proo...