(演算法)二叉樹兩個結點的最遠距離

2021-09-07 01:33:50 字數 811 閱讀 3205

求二叉樹兩個結點的最遠距離。

二叉樹定義如下:

class treenode

};

遍歷每個節點,找出以當前節點為根的最長路徑,然後找出所有最長路徑中的最大值。

**1:

class node;

void longestpath_1(node* proot,int& maxlen)

int rightlen;

if(proot->right)

maxlen=max(proot->maxleft+proot->maxright,maxlen);

}

**2:

class treenode

};void longestpath(treenode* proot,int& maxleft,int& maxright,int& maxlen)

int maxleft_1,maxleft_2,maxright_1,maxright_2;

longestpath(proot->left,maxleft_1,maxright_1,maxlen);

longestpath(proot->right,maxleft_2,maxright_2,maxlen);

maxleft=1+max(maxleft_1,maxright_1);

maxright=1+max(maxleft_2,maxright_2);

maxlen=max(maxleft,maxright)+1;

}

二叉樹結點最遠距離

給定二叉樹,求取該二叉樹多有節點中距離最遠的結點相隔的距離 以root為根節點的樹上,最大距離求取 情況一 root的左子樹上的最大距離 情況二 root的右子樹上的最大距離 情況三 root左子樹上距離root結點最遠的距離,加上root自身這個節點,再加上root右子樹上距離root右孩子最遠的...

求二叉樹兩節點的最遠距離

題目要求比較簡單,寫一程式求一棵二叉樹中相距最遠的兩個節點之間的距離。其實第一眼就能相當用遞迴是最簡單也是最直觀的 以當前節點v為根的子樹中兩節點的最遠距離有三種情況 1 距離最遠的兩個節點均在v的左子樹 2 距離最遠的兩個節點均在v的右子樹 3 距離最遠的兩個節點乙個在左子樹乙個在右子樹 或者v就...

計算二叉樹的任意兩節點的最遠距離。

利用計算二叉樹高度的方法計算兩個節點最遠距離。計算出乙個節點的深度,左右子樹的深度,然後加起來,就是這個節點的最遠的距離了。然後遍歷二叉樹的所以的節點,找出最大的節點即可。include using namespace std typedef struct btreenode node void c...