qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

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

时间2023-06-09 15:55:39 提问来自 河南省郑州市 的网友 分类创作 浏览393
可以利用括号表示法创建二叉树,其中左括号表示左子树的开始,右括号表示左子树的结束,中间的字符表示当前节点的值,例如:`(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 } } ```

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 java利用括号表示串创建二叉树,并通过二叉树的中序遍历结果进行验证 下一篇 健康的生活方式大学生的,英语作文140字