PigyChan_LeetCode 114. 二叉树展开为链表

本文介绍了一道中等难度的编程问题,即如何将给定的二叉树展开为单链表。解决方案通过迭代方式实现,涉及到二叉树的结构重组。在遍历过程中,当遇到非空左子树时,会将其右指针连接到右子树,然后将左子树与当前节点连接,形成链表。这种方法避免了额外存储子树根节点的需要。
摘要由CSDN通过智能技术生成

114. 二叉树展开为链表

难度中等

给定一个二叉树,原地将它展开为一个单链表。

例如,给定二叉树
在这里插入图片描述

将其展开为:
在这里插入图片描述

思路1.0(已看题解):

如果当前节点有左子树,就把左子树拿出接在右子树位置处,原右子树再接在新生成的树最右叶节点的右子树处,如下图:
在这里插入图片描述

代码1.0(已完成):
  class Solution {
  public:


      void flatten(TreeNode* root) {
          while (root != NULL)
          {
              if (root->left == NULL)
                  root = root->right;
              else
              {
                  TreeNode* pre = root->left;
                  while (pre->right != NULL)
                  {
                      pre = pre->right;
                  }
                  pre->right = root->right;


                  root->right = root->left;
                  root->left = NULL;
                  root = root->right;
              }
          }
      }
  };

自己在碰到需要子树信息的时候总是想去把子树的根节点临时存储下来,这方法是不行的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值