数据结构二叉树
来源:互联网 发布:中国网络声优排行榜 编辑:程序博客网 时间:2024/06/14 21:07
求一棵二叉树中相距最远的两个节点之间的距离
分析可知:对于二叉树,若要两个节点U,V相距最远,有两种情况:
A. 从U节点到V节点之间的路径经过根节点
B. 从U节点到V节点之间的路径不经过根节点,这种情况下,U,V节点必定在根节点的左子树或者右子树上,这样就转化为求以根节点的孩子节点为根节点的二叉树中最远的两个节点间的距离
typedef struct Node { struct Node *pleft; //左孩子 struct Node *pright; //右孩子 char chValue; //该节点的值 int leftMaxValue; //左子树最长距离 int rightMaxValue; //右子树最长距离}LNode, *BinTree;void findMaxLen(BinTree root, int *maxLen) { //遍历到叶子结点,返回 if(root == NULL) return; //如果左子树为空,那么该节点左边最长距离为0 if(root->pleft == NULL) root->leftMaxValue = 0; //如果右子树为空,那么该节点右边最长距离为0 if(root->pright == NULL) root->rightMaxValue = 0; //如果左子树不为空,递归寻找左子树最长距离 if(root->pleft != NULL) findMaxLen(root->pleft, maxLen); //如果右子树不为空,递归寻找右子树最长距离 if(root->pright != NULL) findMaxLen(root->pright, maxLen); //计算左子树中距离根节点的最长距离 if(root->pleft != NULL) { if(root->pleft->leftMaxValue > root->pleft->rightMaxValue) root->leftMaxValue = root->pleft->leftMaxValue + 1; else root->leftMaxValue = root->pleft->rightMaxValue + 1; } //计算右子树中距离根节点的最长距离 if(root->pright != NULL) { if(root->pright->leftMaxValue > root->pright->rightMaxValue) root->rightMaxValue = root->pright->leftMaxValue + 1; else root->rightMaxValue = root->pright->rightMaxValue + 1; } //更新最长距离 if(root->leftMaxValue + root->rightMaxValue > *maxLen) *maxLen = root->leftMaxValue + root->rightMaxValue;}
- 求二叉树的最大深度。
int maxdeep(BinTree root){ if(root){ int left = maxdeep(root->left); int right = maxdeep(root->right); return left>right?left+1:right+1; }else{ return 0; }}
1 0
- 数据结构-树-二叉树
- 数据结构::树,二叉树
- 数据结构-二叉树
- 二叉树的数据结构
- 数据结构-二叉树算法
- java数据结构:二叉树
- 数据结构---二叉树
- 数据结构(C++)--二叉树
- JAVA 数据结构 二叉树
- 数据结构-二叉树 问题
- 转贴:数据结构:二叉树
- 二叉树(数据结构 c++)
- 数据结构-二叉树操作
- java数据结构----二叉树
- 数据结构二叉树
- 数据结构中的二叉树
- 数据结构--二叉树
- 数据结构二叉搜索树
- 选择排序(selection sort)
- Linux关机命令详解
- PAT (Advanced Level) 1011. World Cup Betting (20) 求最大期望值,简单题
- SharePoint 2013 开发——获取用户配置文件属性内容(User Profile)
- 记大二结束
- 数据结构二叉树
- Maven学习之搭建私服Nexus
- Eclipse从数据库逆向生成Hibernate带注解的实体类
- 【转载】缓存淘汰算法--LRU算法
- ZOJ 3789 - Gears (并查集)
- 说说ReactiveCocoa 2
- poj 2503 Babelfish(字典树或着STL)
- PARSEC benchmark 编译
- 白盒测试中的六种覆盖方法