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

2021-06-09 01:20:18 字數 871 閱讀 5826

利用計算二叉樹高度的方法計算兩個節點最遠距離。

計算出乙個節點的深度,左右子樹的深度,然後加起來,就是這個節點的最遠的距離了。然後遍歷二叉樹的所以的節點,找出最大的節點即可。

#include using namespace std;

typedef struct btreenode

node;

void create(node *&r ,int m)

else

else

}}int getdepth(node *r)

else

return (max+1); }}

int maxlen=0;

void find(node *r)

if(r->left )

if(r->right)

if(ldis+rdis>maxlen)

find(r->left);

find(r->right);

}void main()

{ node *root=null;

create(root,10);

create(root,6);

create(root,4);

create(root,8);

create(root,15);

create(root,14);

create(root,13);

create(root,12);

create(root,11);

create(root,16);

create(root,18);

create(root,19);

create(root,20);

create(root,21);

cout<<"深度:"<

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

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

二叉樹中任意兩節點的最近父祖先

分析 1.二叉樹是 二叉搜尋樹 左節點小於父節點,右節點大於父節點 思路 從根節點開始,如果當前節點比兩個節點都大,則在左子樹 如比當前節點都小,則在右子樹 以此類推,直到找到乙個節點的大小介於兩節點之間,則該節點就是最近的公共父節點 2.非二叉搜尋樹,但有指向父節點的指標域 思路 分別從兩個節點開...

二叉樹結點最遠距離

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