失败学专家诶♬ 2023-08-06 13:39 采纳率: 83.9%
浏览 4
已结题

关于二叉树展开为链表为什么这样做会出错,想知道应该如何修改以及出错的原因:

关于二叉树展开为链表为什么这样做会出错,想知道应该如何修改以及出错的原因:

img

img


```java
public void flatten(TreeNode root) {
        flatten1(root);
    }
    public TreeNode flatten1(TreeNode root){
        if(root==null)
            return null;
        if(root.left==null||root.right==null)
            return root;
        TreeNode temp=root.right;
        root.right=flatten1(root.left);
        root.left=null;//为什么要置为null?
        root.right.right=temp;
        return root;
    }

```

  • 写回答

2条回答 默认 最新

  • 创意程序员 2023-08-06 15:36
    关注

    先序遍历是先根节点,然后左节点,最后右节点。
    23行应该分开左右节点递归调用。
    27行root.left置为null是为了展开后的单链表左节点为null,但这样同时把原二叉树左子树的左节点置为了null导致丢节点。展开后的单链表root应该用一个新的root,避免相互影响

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 已采纳回答 8月6日
  • 创建了问题 8月6日

悬赏问题

  • ¥15 根据历年月数据,用Stata预测未来六个月汇率
  • ¥15 DevEco studio开发工具 真机联调找不到手机设备
  • ¥15 请教前后端分离的问题
  • ¥100 冷钱包突然失效,急寻解决方案
  • ¥15 下载honeyd时报错 configure: error: you need to instal a more recent version of libdnet
  • ¥15 距离软磁铁一定距离的磁感应强度大小怎么求
  • ¥15 霍尔传感器hmc5883l的xyz轴输出和该点的磁感应强度大小的关系是什么
  • ¥15 vscode开发micropython,import模块出现异常
  • ¥20 Excel数据自动录入表单并提交
  • ¥30 silcavo仿真,30分钟,只需要代码