程式設計之美 05 求二叉樹中節點的最大距離

2021-07-23 20:28:20 字數 786 閱讀 2036

題目:如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,我們姑且定義」距離」為兩節點之間邊的個數。寫乙個程式,求一棵二叉樹中相距最遠的兩個節點之間的距離.

例如:

10 / \

5 12

/ \

4 7

這棵樹的話,最大距離為3.分別路徑為4,5,10,12共3條邊,7,5,10,12共3條邊,所以最大距離為3.

遞迴的思想,分別考慮左右子樹的,從根節點開始.

**如下:

#include

using namespace std;

struct bitreenode

;int nmaxlen =

0;void findmaxlen(bitreenode *proot);

void addbitreenode(bitreenode *&pcurrent, int value);

int main()

void findmaxlen(bitreenode *proot)

if(proot->m_pright !=

null)

if(proot->m_nmaxleft + proot->m_nmaxright > nmaxlen)

nmaxlen = proot->m_nmaxleft + proot->m_nmaxright;

}void addbitreenode(bitreenode *&pcurrent, int value)

else

}

程式設計之美 求二叉樹中節點的最大距離

1.問題描述 寫乙個程式求一棵二叉樹相距最遠的兩個節點之間的距離 如下圖 2.分析與解法 對於任意乙個節點,以該節點為根,假設這個根有k個孩子節點,那麼距離最遠的兩個節點u與v之間的路徑與這個根節點的關係有兩種。1 若路徑經過root,則u和v屬於不同子樹的,且它們都是該子樹中到根節點最遠的節點,否...

程式設計之美 求二叉樹中節點的最大距離

1.問題描述 寫乙個程式求一棵二叉樹相距最遠的兩個節點之間的距離 如下圖 2.分析與解法 對於任意乙個節點,以該節點為根,假設這個根有k個孩子節點,那麼距離最遠的兩個節點u與v之間的路徑與這個根節點的關係有兩種。1 若路徑經過root,則u和v是屬於不同子樹的,且它們都是該子樹中到根節點最遠的節點,...

程式設計之美 求二叉樹中節點的最大距離

如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,我們姑且定義 距離 為兩節點之間邊的個數。寫乙個程式求一棵二叉樹中相距最遠的兩個節點之間的距離。解法 用遞迴的方法 1 資料結構定義 2struct node3 1011 int nmaxlen 0 12 13 尋找樹中最長的兩段距離 14...