链接: Leetcode 606 根据二叉树创建字符串
整体思路:
题目要求按照前序遍历的方式遍历。(根(左子树)(右子树))
根为空直接返回。
根不为空时:看左右子树是否空,就可以分类讨论:
-
左树为空,右树为空
-
左树为空,右树不为空(比较特殊)
-
左树不为空,右树为空
-
左树不为空,右树不为空
class Solution {
public void tree2strChild(TreeNode root,StringBuilder s) {
if(root==null){//根为空直接返回
return;
}
s=s.append(root.val);//根不为空时,就将根放入字符串
if(root.left!=null){//左树不为空
s.append('(');
tree2strChild(root.left,s);
s.append(')');
if(root.right==null){//左树不为空,右树为空
return;
}else{//左树不为空,右树不为空
s.append('(');
tree2strChild(root.right,s);
s.append(')');
}
}else{//左树为空
if(root.right!=null){//左树为空,右树不为空
s.append('(');
s.append(')');
s.append('(');
tree2strChild(root.right,s);
s.append(')');
}else{//左树为空,右树为空
return;
}
}
return;
}
public String tree2str(TreeNode root) {
if(root==null){
return null;
}
StringBuilder s=new StringBuilder();//创建一个字符串对象
tree2strChild(root,s);
return s.toString();//将StringBuilder转换成String
}
}