資料結構和演算法經典100題 第29題

2021-07-09 05:48:44 字數 869 閱讀 7699

題目要求:二叉樹節點間的最大距離問題從二叉樹的節點a出發,可以向上走或者向下走,但沿途的節點只能經過一次,當達到節點b時,路徑上的節點數叫作a到b的距離。比如:

1

2 3

4 5 6 7

節點4和節點2的距離為2,節點5和節點6的距離為5。現在給定一棵二叉樹的頭結點,求整棵二叉樹上節點間的最大距離。

題目解析:

此問題不難解決,也算是經典的問題了吧。其實節點間的最大距離有以下三種情況:

1.是其左子樹上兩節點間的最大距離;

2.是其右子樹上兩節點間的最大距離;

3.是其左子樹上的高度+其右子樹的高度+1;

比較這三個值就可以解決了,後序遍歷二叉樹,遞迴的每次從下至上返回樹高以及其節點最大距離就okay了。

okay,no code say what?

struct node ;

void getdistence(node *head, int &maxhigh, int &maxdis)

if (!head->left)

if (!head->right)

maxhigh = (maxlefthigh > maxrighthigh) ? (maxlefthigh + 1) : (maxrighthigh + 1);

maxdis = (maxleftdis > maxrightdis) ? (maxleftdis) : (maxrightdis);

maxdis = (maxdis > maxhigh) ? maxdis : maxhigh;

return ;

}

路漫漫其修遠兮,吾將上下而求索…

資料結構和演算法經典100題 第27題

已知一棵二叉樹的每個節點的值都不同,給定這個二叉樹的先序和中序遍歷陣列,不要重建整棵二叉樹,而知通過給定的陣列直接生成正確的後序陣列。include include include include using namespace std int setpos int prearray,int pre...

資料結構和演算法經典100題 第28題

題目要求 表示一棵二叉樹中序遍歷結果,1.求有多少種可能的二叉樹結構?2.返回所有可能的二叉樹結構的頭結點?題目解析 1.乙個關鍵點是 中序遍歷一棵二叉樹結果有序無重複,那麼這棵二叉樹必然是搜尋二叉樹。根據搜尋二叉樹的性質,結點1一定沒有左子樹,所以結點1為頭結點可能的二叉樹結構數目取決於其右子樹的...

資料結構和演算法經典100題 第30題

題目要求 先序 中序和後序陣列兩兩結合重構二叉樹已知一棵二叉樹的所有節點都不同,給定二叉樹的先序 中序和後序陣列,請分別用三個函式實現任意兩種組合重構原來的二叉樹,並返回重構二叉樹的頭節點。題目解析 這道題目中,由先序陣列,中序陣列組合重構二叉樹無難度,同理由中序陣列,後序陣列結合重構二叉樹也沒有難...