c_cpp 将二叉树平铺到就地链接列表。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 将二叉树平铺到就地链接列表。相关的知识,希望对你有一定的参考价值。
http://stackoverflow.com/questions/15939582/flatten-binary-search-to-in-order-singly-linked-list-c
//========================================
// recursive. Code below is hard to read if no context. It implement in pre-order
// traversal, as shown in http://www.programcreek.com/2013/01/leetcode-flatten-binary-tree-to-linked-list/
void flatten(TreeNode *r) {
if(!r) return;
flatten(r->left);
if(r->left == NULL) return; // !!!
flatten(r->right);
TreeNode *p = r->left;
while(p->right) p = p->right;
p->right = r->right;
r->right = r->left;
r->left = NULL;
}
//========================================
// iterative
void flatten(TreeNode *r) {
while(r) {
if(r->left) {
TreeNode *p = r->left;
while(p->right) p = p->right;
p->right = r->right;
r->right = r->left;
r->left = NULL;
}
r = r->right;
}
}
以上是关于c_cpp 将二叉树平铺到就地链接列表。的主要内容,如果未能解决你的问题,请参考以下文章
java - 如何使用堆栈安全(基于堆)递归将二叉树转换为java中的列表?
将二叉树每个节点的左右子树互换
如何创建将二叉树转换为元组的函数?
利用JAVA语言,将二叉树封装在一个类中,要求实现二叉树的构造,并实现二叉树的遍历操作。
453 将二叉树拆成链表
java宽度优先将二叉树存成数组