递归将二叉树转换为双向链表
2013-09-03 16:17
246 查看
总体思路是递归,将二叉树转换为记录了头尾指针的双向链表,函数如下
上述过程稍显罗嗦
更为简洁的方式如下:
void convertTreeToListHelp(TreeNode *root, TreeNode *&head, TreeNode *&tail) { head = root; tail = root; if (!root) return; TreeNode *pLeftHead = NULL; TreeNode *pLeftTail = NULL; convertTreeToListHelp(root->left, pLeftHead, pLeftTail); TreeNode *pRightHead = NULL; TreeNode *pRightTail = NULL; convertTreeToListHelp(root->right, pRightHead, pRightTail); if (pLeftTail) { head = pLeftHead; pLeftTail->right = root; root->left= pLeftTail; } if (pRightHead) { tail = pRightTail; root->right = pRightHead; pRightHead->left = root; } }
上述过程稍显罗嗦
更为简洁的方式如下:
TreeNode *head = NULL; TreeNode *tail = NULL; TreeNode convertTreeToList(TreeNode *root) { If (root == NULL) return NULL; convertTreeToList(root->left); Root->left = tail; if (tail == NULL) tail = head = root; else Tail->right = root; Tail = root; convertToList(root->right); return head; }
相关文章推荐
- 二叉树转换为双向链表
- 二叉树转换成双向链表
- 将搜索二叉树转换成双向链表
- 二叉树转换为双向链表
- 二叉树转换为双向环形链表
- 将二叉树转换成双向链表
- 数据结构:题目(1)二叉树转换为双向链表
- 二叉树转换为双向链表
- 查找二叉树转换为排序的双向链表
- 二叉树转换成双向链表
- 二叉树按中序遍历顺序转换成双向链表
- 将二叉树结构转换为双向链表 java语言实现
- 前序和中序重建二叉树、二叉排序树转换为排序的双向链表
- 二叉树转换成双向链表
- 将一棵二叉树转换为双向链表的俩中算法
- 把二叉树转换成双向链表
- (算法)二叉树转换为双向链表
- 将搜索二叉树转换成双向链表
- 二叉树--将二叉搜索树转换成一个排序的双向链表
- 将搜索二叉树转换成双向链表