LintCode_453 将二叉树拆成链表

题目

将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 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;
		}
	}
}

  

 
时间: 2024-10-08 12:03:33

LintCode_453 将二叉树拆成链表的相关文章

453 将二叉树拆成链表

原题网址:https://www.lintcode.com/problem/flatten-binary-tree-to-linked-list/description 描述 将一棵二叉树按照前序遍历拆解成为一个假链表.所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针. 不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出. 您在真实的面试中是否遇到过这个题?  是 样例 1 1 2 / \ 2 5 => 3 / \ \ 3 4 6 4 5 6 挑

[LeetCode] Flatten Binary Tree to Linked List 将二叉树展开成链表

Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / 2 5 / \ 3 4 6 The flattened tree should look like: 1 2 3 4 5 6 click to show hints. Hints: If you notice carefully in the flattened tree, each node's right child points

[LintCode] Flatten Binary Tree to Linked List 将二叉树展开成链表

Flatten a binary tree to a fake "linked list" in pre-order traversal. Here we use the right pointer in TreeNode as the next pointer in ListNode. Notice Don't forget to mark the left child of each node to null. Or you will get Time Limit Exceeded

LeetCode(114): 二叉树展开为链表

Medium! 题目描述: 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / 2 5 / \ 3 4 6 将其展开为: 1 2 3 4 5 6 解题思路: 这道题要求把二叉树展开成链表,根据展开后形成的链表的顺序分析出是使用先序遍历,那么只要是数的遍历就有递归和非递归的两种方法来求解,这里我们也用两种方法来求解. 首先来看递归版本的,思路是先利用DFS的思路找到最左子节点,然后回到其父节点,把其父节点和右子节点断开,将原左子结点连上父节点的右子节点上,然后再把原右子节点连到新右子节

【LeetCode-面试算法经典-Java实现】【114-Flatten Binary Tree to Linked List(二叉树转单链表)】

[114-Flatten Binary Tree to Linked List(二叉树转单链表)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a binary tree, flatten it to a linked list in-place. For example, Given 1 / 2 5 / \ 3 4 6 The flattened tree should look like: 1 2 3 4 5 6 题目大意 给定一棵二叉树.将它转

将字符串拆成数组,过滤字符串

/**     * 将字符串拆成数组     * @param string $string:字符串     * @return 返回拆成的数组     */    function mbStringToArray ($string) {        $string = $this->getChinaEnglishNumString($string);        $array = array();        $strlen = mb_strlen($string);        wh

OGG进程拆分(单表拆成多个进程)

OGG进程拆分(单表拆成多个进程) 概要: <OGG进程拆分>介绍了如何将一个入库进程中的多个表拆分到其他进程中.本篇将着重介绍如何使用多个进程同时入库一张表. 适用条件: 1)入库进程只同步一张表,但仍有延时 2)目标段主机CPU.内存压力不大,以便有足够的资源添加新的入库进程 本示例将RZG_CXI2中的HX_SB.SB_CWBB_XQYKJZZ_ZCFZB表拆分到RZG_CXI1-RZG_CXI8这8个进程中 1. 创建新添加进程的配置文件 edit  params RZG_CXI1 #

二叉树转换成森林&amp;森林变成二叉树

一,树转换成二叉树 1,将所有兄弟结点连起来; 2,保留第一个兄弟结点与父节点的连接,断开其他兄弟结点与父节点的连接,然后以根节点为轴按照顺时针方向旋转45度 二,二叉树转换成森林 方法: 1,将每棵树转换为二叉树 2,将1中得到的二叉树的根节点看作是兄弟连接起来. 三,森林转换二叉树 右结点全部断开拿到根节点上去

二叉树转换成森林&amp;amp;森林变成二叉树

一,树转换成二叉树 1,将全部兄弟结点连起来; 2,保留第一个兄弟结点与父节点的连接,断开其它兄弟结点与父节点的连接,然后以根节点为轴依照顺时针方向旋转45度 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU2h1aVRpYW5OYWlMdW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 二,二叉树转换成森林 方法: 1,将每棵树转换为二叉