ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

0114. Flatten Binary Tree to Linked List (M)

2021-05-15 15:02:45  阅读:124  来源: 互联网

标签:tmp Binary right 0114 Tree while null root left


Flatten Binary Tree to Linked List (M)

题目

Given a binary tree, flatten it to a linked list in-place.

For example, given the following tree:

    1
   / \
  2   5
 / \   \
3   4   6

The flattened tree should look like:

1
 \
  2
   \
    3
     \
      4
       \
        5
         \
          6

题意

将一个二叉树的结构变为只有右子树的一直链,且顺序为原二叉树的前序遍历。

思路

方法有点像 Morris Traversal:如果当前结点root存在左子树,则将该结点的右子树接在其左子树最右结点的右边,再将root的左子树变为右子树,令 root = root.right 重复上述操作。


代码实现

Java

class Solution {
    public void flatten(TreeNode root) {
        while (root != null) {
            if (root.left != null) {
                TreeNode x = root.left;
                while (x.right != null) {
                    x = x.right;
                }
                x.right = root.right;
                root.right = root.left;
                root.left = null;
            }
            root = root.right;
        }
    }
}

JavaScript

/**
 * @param {TreeNode} root
 * @return {void} Do not return anything, modify root in-place instead.
 */
var flatten = function (root) {
  while (root) {
    if (root.left) {
      let tmp = root.left
      while (tmp.right) tmp = tmp.right
      tmp.right = root.right
      root.right = root.left
      root.left = null
    }
    root = root.right
  }
}

标签:tmp,Binary,right,0114,Tree,while,null,root,left
来源: https://www.cnblogs.com/mapoos/p/14771533.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有