求二叉樹兩個結點的最遠距離。
二叉樹定義如下:
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...