leetcode Flatten Binary Tree to Linked List树

原创 2015年07月06日 16:54:27

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 to the next node of a pre-order traversal.

题目意思是把一个二叉树给拍扁,仔细观察下其实就是先序遍历,提示里也说了是先序遍历,最直观的可以相当先把先序遍历的结果存起来,再一个一个接到右边,但总感觉很low,可以直接先序遍历的时候进行操作,同样,如果要接的话肯定要用到额外的一个节点tail,先序遍历的时候每次把当前节点接到tail的右边,然后tail的左边置空,再把当前节点赋给tail。

class Solution {
public:
	TreeNode* tail=NULL;//当前指针
	void preorder(TreeNode*root)
	{
		if (root!=NULL)
		{
			TreeNode*left=root->left;
			TreeNode*right = root->right;
			if (tail==NULL)//根节点
			{
				tail = root;
			}
			else
			{
				tail->right = root;
				tail->left = NULL;
				tail = root;
			}
			preorder(left);
			preorder(right);
		}
	}
	void flatten(TreeNode* root) {
		if (!root) return;
		preorder(root);
	}
};


树的操作-将树变为链表(Flatten Binary Tree to Linked List)

树的操作-将树变为链表(Flatten Binary Tree to Linked List)
  • u010909667
  • u010909667
  • 2017年06月28日 22:05
  • 92

Leetcode-Symmetric Tree——判断二叉树是否对称

题目 Symmetric Tree  Total Accepted: 12814 Total Submissions: 40358My Submissions Given a bina...
  • disappearedgod
  • disappearedgod
  • 2014年04月20日 01:00
  • 2060

二叉搜索树(Binary Search Tree )的定义及分析

定义:     二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 每个结点都有一个作为搜索依据的关键码(key),所有结点的关键码互不相同。 左子树(如果非空)上所...
  • jsh13417
  • jsh13417
  • 2013年01月22日 21:59
  • 3359

LeetCode之Tree题目汇总

Balanced Binary TreeGiven a binary tree, determine if it is height-balanced.For this problem, a heig...
  • Yano_nankai
  • Yano_nankai
  • 2015年12月29日 20:43
  • 696

数据结构(Java语言)——BinarySearchTree简单实现

二叉树的一个重要应用是它们在查找中的使用。使二叉树成为二叉查找树的性质是,对于树中的每个节点X,它的左子树中所有项的值都大于X中的项。注意,这意味着该树所有的元素都可以用某种一致的方式排序。 现在给出...
  • zhang_zp2014
  • zhang_zp2014
  • 2015年08月14日 21:55
  • 937

二叉查找树(binary search tree)——python实现

二叉查找树(binary search tree) 顾名思义二叉查找树中每个jied
  • u013184096
  • u013184096
  • 2014年07月11日 21:59
  • 1447

Java中List转List树的通用解决方法~

首先是父接口,想要用这个通用List树生成的话就必须实现这个接口 import java.util.List; /** * @author Mu * */ public interface T...
  • j506825719
  • j506825719
  • 2016年08月02日 09:10
  • 3047

Binary Tree Traversal二叉树遍历方法总结

Binary Tree Traversal二叉树遍历方法总结这里总结的二叉树遍历分为两大类: 深度优先(depth-first traversal) 广度优先(breadth-first traver...
  • jackey_jk
  • jackey_jk
  • 2016年04月01日 02:58
  • 783

Leetcode全树类问题

Leetcode全树类问题。算法总的来说就是递归(Stack, DFS)和广度优先(Queue, BFS)两种。下面有关二叉树类linked list的题目,若不加特别说明......
  • wangxiaojun911
  • wangxiaojun911
  • 2014年02月04日 03:03
  • 8673

二分查找树的C++实现 Binary Search Tree(BST)

用C++实现了二叉查找树的 创建 插入 删除 遍历(宽度优先和三种深度优先[前序,中序,后序]) 查找某值 查找最大值和最小值 清空 复制二叉树(深复制) #include #include u...
  • showonstage1
  • showonstage1
  • 2014年03月13日 19:14
  • 1632
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode Flatten Binary Tree to Linked List树
举报原因:
原因补充:

(最多只允许输入30个字)