二叉樹兩個節點之間的最大距離

2021-07-22 14:29:50 字數 656 閱讀 4965

二叉樹兩個節點之間的最大距離,以根節點分析,最大距離可能有3種情況:

左左+右右+左右

左左相當於求左子樹上的遞迴子問題,右右相當於求右子樹的遞迴子問題。左右是需要我們處理的問題。我們使用record陣列來記錄左邊的最大值和右邊的最大值。

#includeusing namespace std;

struct node

}; int posorder(node* head, int* record)

int lmax = posorder(head->left, record);

int maxfromleft = record[0];

int rmax = posorder(head->right, record);

int maxfromright = record[0];

int curnodemax = maxfromleft + maxfromright + 1;

record[0] = max(maxfromleft, maxfromright) + 1;

return max(max(lmax, rmax), curnodemax);

} int maxdistance(node* head)

void main()

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

二叉樹節點的結構體定義如下 struct btreenode 使用遞迴的方式,遍歷二叉樹,然後從葉子節點開始修改結構體中的 maxleft 和 maxright 變數,直至回溯到根節點。詳細的 如下 include using namespace std 將節點儲存的資料型別設為整型 typedef...

二叉樹兩個節點間的距離

距離是指連線兩個節點需要的最小的邊的條數。1找到節點的共同祖先 2 找到節點到共同祖先的距離dist,可以想到這個距離disthelper 節點到root距離 root到共同祖先的距離 3 兩個節點間距離 節點1到共同祖先的距離dist1 節點2到共同祖先的距離dist2 節點1到root距離 ro...

演算法 求二叉樹中兩個節點的最大距離

如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,定義 距離 為這條路徑上所有節點的value和。寫乙個程式求一棵二叉樹中最大的路徑距離。對於這個圖,最大的路徑是從5 3 7,距離為15的路徑。採用後序遍歷,對於每乙個節點儲存經過當前節點的單邊路徑的最大距離,定義為single max,為...