码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode_453 将二叉树拆成链表

时间:2016-05-03 01:55:43      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

题目

将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。

样例

              1
                    1          2
    / \             2   5    =>    3
  / \   \           3   4   6          4
                                           5
                                               6
思路
left = root->left;
right = root->right;
p = left->right的最后一个节点
如果有left节点
{
  root->left = NULL;
  root->right = left;
  left->right = right;
}
然后递归
C++代码
void flatten(TreeNode *root) {
	// write your code here
	if (root)
	{
		TreeNode* left = root->left;
		TreeNode* right = root->right;
		TreeNode* p = root;
		flatten(root->left);
		flatten(root->right);
		if (left)
		{
			p = root->left;
			while (p->right)
			{
				p = p->right;
			}
			root->left = NULL;
			root->right = left;
			p->right = right;
		}
	}
}

  

 

LintCode_453 将二叉树拆成链表

标签:

原文地址:http://www.cnblogs.com/Smallhui/p/5453595.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!