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

2021-07-15 22:38:08 字數 626 閱讀 3498

「距離」是兩結點之間邊的個數。求最大距離存在兩種情況,一是路徑經過左子樹的最深結點,通過根結點,再到右子樹的最深結點。二是不穿過根結點,二是左子樹或右子樹的最大距離路徑中,取其大者。

問題的核心在於兩種不同的情況需要不同的資訊,一是需要子樹的最大深度,二是需要子樹的最大距離。遞迴**如下:

先序遍歷輸入用例:

情況一:abcdh###e##cf#i##g##

情況二:abce###d#f###

//求二叉樹中結點的最大距離

#includeusing namespace std;

typedef struct bitreenode*bitree;

struct result;

//函式宣告

int max(int ld,int rd);

result getmaxdistance(bitreenode *root);

void createbitree(bitree &root);

void main()

int max(int ld,int rd)//返回最大值

void createbitree(bitree &root)//先序建立一課二叉樹

}

二叉樹結點的最大距離

二叉樹結點中的最大距離 struct node int nmaxlen 0 尋找樹中最長的兩段距離 void findmaxlen node proot if proot pleft null if proot pright null if proot pleft null if proot pri...

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

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

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

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