(606)는 이진 트리의 문자열을 만들 따르면
당신은 예약 주문 탐색 방법은, 이진 트리가 정수와 브라켓의 문자열로 변환해야합니다.
각각 빈 괄호 쌍 빈 노드 "()". 그리고 당신은 모든 권리 빈 괄호의 원래 이진 문자열 사이에 하나의 매핑에 영향을 생략 할 필요가 없습니다.
예 1 :
입력 : 이진 트리 : [1,2,3,4]
1
/ \
2 3
/
4
출력 "1 (2 (4)) (3)"
설명 : 원본이 될 것입니다 "(1) (2 (4) () () 3 ())"
모든 불필요한 빈 괄호를 생략 한 후
이 될 것입니다. "(1) (2 (4)) (3)"
예 2 :
입력 : 이진 트리 : [1,2,3, 널 (null), 4]
1
/ \
2 3
\
4
출력 "1 (2 () (4)) (3)"
설명 : 첫 번째 예와 유사한,
우리는 첫 번째를 생략 할 수없는 것을 제외하고는 입력 및 괄호의 출력 사이에 하나의 매핑을 깰.
추신 :
트리를 탐색
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public String tree2str(TreeNode t) {
StringBuilder sb = new StringBuilder();
doTree2str(t, sb);
return sb.toString();
}
private void doTree2str(TreeNode t, StringBuilder sb) {
if (t != null) {
sb.append(t.val);
if (t.left != null || t.right != null) {
sb.append('(');
doTree2str(t.left, sb);
sb.append(')');
if (t.right != null) {
sb.append('(');
doTree2str(t.right, sb);
sb.append(')');
}
}
}
}
}