链接
606. Construct String from Binary Tree
题意
根据二叉树构建符合规则的字符串:输出每个节点,对于子节点,分别用圆括号即()括住左右子节点,若子节点为空,则直接用()代替,但需要在不引起歧义的情况下省略为空的括号。输出顺序为树的前序遍历顺序。
思路
利用递归,输出当前遍历节点时,先加上左括号,输出后加上右括号。但若当前节点为右节点,需要添加一个非空判断。
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public String tree2str(TreeNode t) {
StringBuilder sb = new StringBuilder();
helper(sb,t);
return sb.toString();
}
public void helper(StringBuilder sb,TreeNode t){
if(t!=null){
sb.append(t.val);
if(t.left!=null||t.right!=null){
sb.append("(");
helper(sb,t.left);
sb.append(")");
if(t.right!=null){
sb.append("(");
helper(sb,t.right);
sb.append(")");
}
}
}
}
}