这里的实现默认二叉树中的所有结点元素的值都是唯一的。
二叉树结构定义为:
public class Node {
char val;
Node left;
Node right;
public Node(){}
public Node(int val) {
this.val = val;
}
}
根据前序、中序遍历字符串创建二叉树
public static Node genTreeFromOrderTraversals(String preOrder, String inOrder) {
if (preOrder == null || preOrder.equals("")
|| inOrder == null || inOrder.equals(""))
return null;
char c = preOrder.charAt(0);
Node node = new Node(c);
int divider = 0;
while(divider < inOrder.length()
&& inOrder.charAt(divider) != c) {
divider++;
}
node.left = genTreeFromOrderTraversals(preOrder.substring(1, divider + 1), inOrder.substring(0, divider));
node.right genTreeFromOrderTraversals(preOrder.substring(divider + 1), inOrder.substring(divider + 1));
return node;
}
根据后序、中序遍历字符串创建二叉树
public static Node genTreeeFromOrderTraversals(String postOrder, String inOrder) {
if (postOrder == null || postOrder.equals("")
|| inOrder == null || inOrder.equals(""))
return null;
int len = postOrder.length();
char c = postOrder.charAt(len - 1);
Node node = new Node(c);
int divider = 0;
while (divider < inOrder.length()
&& inOrder.charAt(divider) != c) {
divider++;
}
node.left = genTreeeFromOrderTraversals(postOrder.substring(0, divider), inOrder.substring(0, divider));
node.right = genTreeeFromOrderTraversals(postOrder.substring(divider, len - 1), inOrder.substring(divider + 1));
return node;
}