二叉树节点的最大距离---ms
来源:互联网 发布:下载社交软件 编辑:程序博客网 时间:2024/06/05 10:57
/************************************************************* * file: max_distance_of_binary_tree.c * brief:求二叉树节点的最大距离的递归和非递归算法 * yejing@2015.2.9 1.0 creat *************************************************************/ #include <stdi.h> #include <stdlib.h> #include <string.h> #include <assert.h> typedef struct _tree_node_t{struct _tree_node_t* left;struct _tree_node_t* right;int left_distance; //左子树的最大距离int right_distance; //右子树的最大距离char value; char res[3]; //对齐 }tree_node_t, node_t; static int current_max_distance = 0; static void recursive_get_mdistance_bintree(tree_node_t* node){if(!node)return;int tmp;if(node->left){tmp = 0;if(node->left->left_distance > node->left->right_distance)tmp = node->left->left_distance;elsetmp = node->left->right_distance;node->left_distance = ++tmp;}else node->left_distance = 0;if(node->right){tmp = 0;if(node->right->left_distance > node->right->right_distance)tmp = node->right->left_distance;elsetmp = node->right->right_distance;node->right_distance = ++tmp;}else node->right_distance = 0;if(current_max_distance < node->right_distance + node->left_distance)current_max_distance = node->right_distance + node->left_distance;return; } //暂时没有找到好办法 static void loop_get_mdistance_bintree(tree_node_t* node){ } static node_t* create_binary_search_tree_node(int value){node_t* root = (node_t*)malloc(sizeof(node_t));if(!root)assert(0);root->value = value;root->left = NULL;root->right = NULL;return root;}static search_appriproate_position(node_t* root, int value){if(!root)assert(0);node_t* tmp = root;do{if(value < tmp->value){if(tmp->left)tmp = tmp->left;elsereturn tmp;}else{if(tmp->right)tmp = tmp-right;elsereturn tmp;}}while(1);return NULL;}static node_t* add_node_to_tree(node_t* root, int value){node_t* tmp = create_binary_search_tree_node(value);if(!tmp)return root;node_t* pos = search_appriproate_position(root, value);if(pos){if(value < pos->value)pos->left = tmp;elsepos->right = tmp;}return root;} int main(int argc, char* argv[]){node_t* root = create_binary_search_tree_node(8);if(!root)assert(0);add_node_to_tree(root, 6);add_node_to_tree(root, 10);add_node_to_tree(root, 5);add_node_to_tree(root, 7);add_node_to_tree(root, 9);add_node_to_tree(root, 11);recursive_get_mdistance_bintree();printf("current_max_distance:%d after recursive_get_mdistance_bintree\n", current_max_distance);current_max_distance = 0;loop_get_mdistance_bintree();printf("current_max_distance:%d after loop_get_mdistance_bintree\n", current_max_distance);return 1; }
0 0
- 二叉树节点的最大距离---ms
- 求二叉树节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 求二叉树节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 二叉树中节点的最大距离
- 求二叉树节点的最大距离
- 二叉树中节点的最大距离
- 求二叉树节点的最大距离
- 求二叉树节点的最大距离
- 二叉树节点间的最大距离
- 最大距离二叉树节点
- NIO复制文件
- LuCI界面开发之CBI模块
- ArcGIS教程:网络分析图层的类型(一)
- [LeetCode]Binary Search Tree Iterator
- 索引对提高查询速度的影响
- 二叉树节点的最大距离---ms
- Java多线程(四)——控制线程
- 鲁大师查验Acer电脑信息
- ArcGIS教程:网络分析图层的类型(二)
- DropDownList无刷新ajax二级联动效果
- 实现strcpy函数及其长度
- 读《高效程序员的10个习惯》
- uva 10986 (队列优化的spfa最短路)
- 拿本字典去编程吧