利用計算二叉樹高度的方法計算兩個節點最遠距離。
計算出乙個節點的深度,左右子樹的深度,然後加起來,就是這個節點的最遠的距離了。然後遍歷二叉樹的所以的節點,找出最大的節點即可。
#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右孩子最遠的...