首页 > ChatAI > AI文库 >

java利用括号表示串创建二叉树,并通过二叉树的中序遍历结果进行验证,并用代码表示

分享 52829

分享

可以利用括号表示法创建二叉树,其中左括号表示左子树的开始,右括号表示左子树的结束,中间的字符表示当前节点的值,例如:`(A(B(C)(D))(E(F)))` 表示如下的二叉树:

```
A
/ \
B E
/ /
C F
\
D
```

可以通过中序遍历验证二叉树的正确性,中序遍历的结果应该是按照节点值的大小顺序输出。

以下是Java代码实现:

```java
class TreeNode {
char val;
TreeNode left;
TreeNode right;
TreeNode(char x) { val = x; }
}

public class BinaryTree {
public static TreeNode createTree(String s) {
if (s == null || s.length() == 0) {
return null;
}
Stack<TreeNode> stack = new Stack<>();
TreeNode root = null;
int i = 0;
while (i < s.length()) {
char c = s.charAt(i);
if (c == '(') {
stack.push(root);
root = null;
} else if (c == ')') {
root = stack.pop();
} else {
root = new TreeNode(c);
if (!stack.isEmpty()) {
TreeNode parent = stack.peek();
if (parent.left == null) {
parent.left = root;
} else {
parent.right = root;
}
}
}
i++;
}
return root;
}

public static void inorderTraversal(TreeNode root) {
if (root == null) {
return;
}
inorderTraversal(root.left);
System.out.print(root.val + " ");
inorderTraversal(root.right);
}

public static void main(String[] args) {
String s = "(A(B(C)(D))(E(F)))";
TreeNode root = createTree(s);
inorderTraversal(root); // 输出 C B D A F E
}
}
```

相关推荐

新征程上,青年如何握紧接力棒,走好奋斗路为主题写一篇思想报告

AI文库

神秘岛高三读后感700字

高三

韩国请回答1988电视剧观后感

电视剧观后感

九年级数学二次根式知识点

别名数学

语文教学工作计划模板

工作计划范文

热门图文

上一篇:大数据职业的工程伦理问题1万字

下一篇:中国流行音乐第一人是谁