100 二叉树展开为链表,多种方式解决

发布时间:2024年01月04日

问题描述:给你二叉树的根节点root,请你将他展开为一个链链表:展开后的单链表应该同样适用TreeNode其中right指向链表的下一个节点,而左指针始终为null,展开后的单链表应该与二叉树的先序遍历顺序相同。
?

TreeNode pre=null;

public void expand(TreeNode root)
{
if(root==null){return null;}
if(pre==null)
{
expand(root.left);
expand(root.right);
}else
{
pre.right=root;
pre.left=null;
pre=root;
expand(root.left);
expand(root.right);
}

}
public TreeNode expand(TreeNode root)
{
expand(root);
???????return root;
}

重建二叉树的方式,首先通过前序遍历将二叉树放入链表中,然后依次拿出来进行,处理。

public void expand(TreeNode root,List<TreeNode>res)
{
if(root==null){return;}
res.add(0,root);
expand(root.left,res);
expand(root.right,res);
}
public TreeNode expand(TreeNode root)
{
List<treeNode>res=new LinkedList<>();
expand(root,res);
TreeNode pre=null;
for(treeNode node:res)
{
if(pre!=null)
{
pre.right=node;
pre.left=null;
}
???????pre=node;
}
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135394825
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。