103 从先序遍历还原二叉树

发布时间:2024年01月05日

问题描述:我们从二叉树的根节点root开始进行深度优先搜索。在遍历中的每个节点处,我们输出D条短划线(其中D是该节点的深度),然后输出该节点的值(如果节点的深度为D,则其直接子节点只有一个子节点,那么保证该子节点为左子节点),给出遍历输出s,还原树并返回根节点root,
输入:"1-2--3--4-5--6--7"输出[1,2,5,3,4,6,7]
?

public int restoreTree(String s,int index,int level,TreeNode parent,Bolean left)
{
if(index>=s.length()){return 0;}
int countSub=0;
for(int i=index;i<s.length();i++)
{
if(s.charAt(i)!='-'){break;}
countSub++;
}
int numCount=0;
int number=0;
for(i=index+countSub;i<s.length();i++)
{
if(s.charAt(i)=='-'){break;}
numCount++;
number=number*10+(int)(s.charAt(i)-'0');
}

if(level==countSub)
{

TreeNode root=new TreeNode();
root.val=number;
if(parent!=null)
{
if(left)
parent.left=root;
else
parent.right=root;
}
int left=restoreTree(s,index+countSub+numCount,level+1,root,true);
int right=restoreTree(s,index+lcountSub+numCount+left,level+1,root,false);
return countSub+left+right+numCount;
}else
{
return 0;
}
}

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