计算二叉树的任意两节点的最远距离。
来源:互联网 发布:收音机软件哪个好 编辑:程序博客网 时间:2024/04/30 17:49
利用计算二叉树高度的方法计算两个节点最远距离。
计算出一个节点的深度,左右子树的深度,然后加起来,就是这个节点的最远的距离了。然后遍历二叉树的所以的节点,找出最大的节点即可。
#include <iostream>using namespace std;typedef struct BtreeNode{int data;struct BtreeNode *left,*right;}node;void create(node *&r ,int m){if(r==NULL){node *t = new node();t->data = m;t->left =NULL;t->right = NULL;r = t;}else{if(m<r->data){create(r->left ,m);}else{create(r->right ,m);}}}int getdepth(node *r){if(r==NULL){return 0;}else{int max = getdepth(r->left);if(getdepth(r->right)>max){max = getdepth(r->right);}return (max+1);}}int maxlen=0;void Find(node *r){int ldis ,rdis ;if(r==NULL){return;}if(r->left ){ ldis = getdepth(r->left);}if(r->right){rdis = getdepth(r->right);}if(ldis+rdis>maxlen){maxlen = ldis +rdis;}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<<"深度:"<<getdepth(root)<<endl;Find(root);cout<<"最大距离"<<maxlen<<endl;}
- 计算二叉树的任意两节点的最远距离。
- 二叉树的两节点的最远距离
- 求二叉树两节点的最远距离
- 二叉树节点的最远距离
- 【二叉树6】寻找二叉树中任意节点最远的距离
- 计算二叉树中最远节点距离
- 二叉树的任意两节点间的最大距离
- 二叉树中任意两节点的距离
- 对于树的最远两节点的距离的理解
- 求一颗二叉树中最远的两个节点的距离
- 二叉树的两个节点之间最远的距离
- 求二叉树中最远的两个节点的距离
- 求二叉树中最远的两个节点的距离
- ~求二叉树中最远的两个节点的距离~
- 求二叉树中最远的两个节点的距离
- 查找二叉树最远两个节点的距离
- 求二叉树中两个节点最远的距离
- 二叉树中最远两个节点的距离
- web简介
- HDU 2103 Family Plan
- 浅谈webview
- 数据结构之卡特兰数
- C++中的dynamic_cast
- 计算二叉树的任意两节点的最远距离。
- 二叉查询树三种遍历的非递归写法
- 3ds max 导出插件开发后记
- 打完电话如何返回原程序
- 2012.9.2日记
- 装修材料
- Struts2---->I18N
- 如何使SQLPlus的查询结果排列整齐(Oracle 10g)
- android dialog ——ProgressDialog 进度条对话框详解