[Leetcode]Flatten Binary Tree to Linked List~

原创 2015年11月20日 16:01:10

Flatten Binary Tree to Linked List My Submissions Question
Total Accepted: 66064 Total Submissions: 223714 Difficulty: Medium
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.

Subscribe to see which companies asked this question
中午上课前在leetcode做的时候出了各种细节错误,于是上课的时候在纸上写了下,也就十多分钟。上完课我回来提交,AC。
有时候在纸上写会更细心,写的过程也在思考。
思路:
递归处理,将左右子树Flatten,并判断左子树是否为空,为空则直接返回。不为空则将左子树的最后一个结点的右孩子设为右子树,并将左子树设置为根结点的右子树,并清空根节点左子树即可

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    void flatten(TreeNode* root) {
        if(!root)   return;
        if(!root->left && !root->right) return;
        flatten(root->left);
        flatten(root->right);
        if(end(root->left)){
            end(root->left) -> right = root->right;
            root->right = root->left;
            root->left = nullptr;
            return;
        }
        else{
            return;
        }
    }
    TreeNode* end(TreeNode* root){
        if(!root)   return nullptr;
        auto p = root;
        while(p->right){
            p = p->right;
        }
        return p;
    }
};

P.S 上张图记录下,这种感觉蛮好的
这里写图片描述

版权声明:转载请注明出处

【LeetCode-面试算法经典-Java实现】【109-Convert Sorted List to Binary Search Tree(排序链表转换成二叉排序树)】

【109-Convert Sorted List to Binary Search Tree(排序链表转换成二叉排序树)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  G...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月10日 07:46
  • 2747

【LeetCode-面试算法经典-Java实现】【103-Binary Tree Zigzag Level Order Traversal(二叉树分层Z字形遍历)】

【103-Binary Tree Zigzag Level Order Traversal(二叉树分层Z字形遍历)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Give...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月08日 06:35
  • 2565

LeetCode 206 Reverse Linked List(反转链表)(Linked List)(四步将递归改写成迭代)(*)

翻译反转一个单链表。原文Reverse a singly linked list.分析我在草纸上以1,2,3,41,2,3,4为例,将这个链表的转换过程先用描绘了出来(当然了,自己画的肯定不如博客上面...
  • NoMasp
  • NoMasp
  • 2016年01月14日 06:22
  • 3726

[Leetcode]Flatten Binary Tree to Linked List (三种方法)

Given a binary tree, flatten it to a linked list in-place. For example, Given 1 ...
  • CR_Peace
  • CR_Peace
  • 2014年10月30日 23:50
  • 484

Leetcode Flatten Binary Tree to Linked List

深入理解了指针和树的操作,那么这道题是十分简单的,但是没理解好,那么这道题是非常难的。 重要一点:遍历访问的时候,不能改变没有访问过的树节点的结构。 也因为这一点,所以这道题不能像普通先序遍历那样写程...
  • kenden23
  • kenden23
  • 2014年01月20日 19:18
  • 1169

LeetCode Flatten Binary Tree to Linked List

题目 Given a binary tree, flatten it to a linked list in-place. For example, Given 1 ...
  • xyzchenzd
  • xyzchenzd
  • 2015年02月08日 15:21
  • 266

[LeetCode] Flatten Binary Tree to Linked List

给定一个二叉树,将它变成一个类似上面那样的链表,而且操作要原地进行。...
  • ILOVEYOUXIAOWANGZI
  • ILOVEYOUXIAOWANGZI
  • 2013年12月23日 21:25
  • 661

LeetCode(114) Flatten Binary Tree to Linked List解题报告

Given a binary tree, flatten it to a linked list in-place.For example, Given 1 / \ ...
  • Ssunsets
  • Ssunsets
  • 2015年12月14日 09:57
  • 261

<LeetCode OJ> 114. Flatten Binary Tree to Linked List

Total Accepted: 84864 Total Submissions: 270352 Difficulty: Medium Given a binary tree, flatten...
  • EbowTang
  • EbowTang
  • 2016年06月12日 17:57
  • 909

LeetCode 114. Flatten Binary Tree to Linked List(摊平二叉树)

原题网址:https://leetcode.com/problems/flatten-binary-tree-to-linked-list/ Given a binary tree, flatte...
  • jmspan
  • jmspan
  • 2016年05月24日 00:19
  • 292
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Leetcode]Flatten Binary Tree to Linked List~
举报原因:
原因补充:

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