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