改二叉树为链表,使每个节点指向其中序遍历的下个节点

来源:互联网 发布:php配置教程 编辑:程序博客网 时间:2024/06/03 18:08

改二叉树为链表,使每个节点指向其中序遍历的下个节点

用递归的方法。(以下代码已经过测试)

struct node *btree2list(struct node *tree) {struct node *right;struct node *left;struct node *list=NULL;struct node *tmp;if(tree) {right = btree2list(tree->right);left = btree2list(tree->left);if(right && left) {tree->right = right;right->left = tree;tmp = left;while(left->right)left = left->right;tree->left = left;left->right = tree;list = tmp;} else if(right) {right->left = tree;tree->right = right;list = tree;} else if(left) {tmp = left;while(left->right)left = left->right;left->right = tree;tree->left = left;list = tmp;} else {list = tree;}}return list;}

原创粉丝点击