- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我关注了this idea还有这个C++ code在 Java 中从 PreOrder 数组重建二叉搜索树。我不是重新发明算法,而是尝试实现伪代码。我在这里需要帮助。我没有得到正确的输出。我得到的输出在代码下方。
public class BinaryTreeMethods {
public static void main(String[] args) {
int[] arr = {7,5,3,6,9,8,10};
Node newone = CreateFromPreOrder(arr,arr.length);
printInorder(newone);
System.out.println();
printPreOrder(newone);
public static Node CreateFromPreOrder(int[] arr, int length) {
if(length==0)
return null;
Node root = new Node(arr[0]);
Stack<Node> s = new Stack<Node>();
s.push(root);
for(int i=1; i<length; i++)
{
Node tmp = new Node(arr[i]);
Node next = s.peek();
if(tmp.data < next.data)
{
next.left = tmp;
}
else
{
Node popped = null;
while(!s.isEmpty() && tmp.data > next.data)
{
popped= s.peek();
s.pop();
}
popped.right = tmp;
}
s.push(tmp);
}
return root;
}
public static void printInorder(Node root) {
if (root!=null){
printInorder(root.left);
System.out.print(" " + root.data);
printInorder(root.right);
}
}
class Node {
Node left;
Node right;
int data;
public Node(int c){
this(c, null, null);
}
public Node(int c,Node left, Node right) {
this.data = c;
this.left=left;
this.right=right;
}
}
public static void printInorder(Node root) {
if (root!=null){
printInorder(root.left);
System.out.print(" " + root.data);
printInorder(root.right);
}
}
public static void printPreOrder(Node root) {
if (root!=null){
System.out.print(" " + root.data);
printInorder(root.left);
printInorder(root.right);
}
}
}
我没有得到预期的输出:
3 5 7 6 8 9 10
7 3 5 6 8 9 10
最佳答案
看起来递归打印搞砸了。这里printPreOrder
应该调用自己遍历左右子树,而不是调用printInOrder
来遍历。
public static void printPreOrder(Node root) {
if (root!=null){
System.out.print(" " + root.data);
printPreOrder(root.left);
printPreOrder(root.right);
}
}
}
关于java - 在 Java 中从 preOrder 数组实现二叉搜索树重建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19941178/
我正在尝试使用返回 IEnumerable 的 yield return 实现 Tree Traversal PreOrder private IEnumerable Preorder(Node no
我正在尝试编写一个递归函数来预先打印出这些值。但是,由于某种原因,它一直打印出与我的 inOrder 函数相同的内容。 postOrder 函数可以正常工作,但我必须为那个函数稍微不同地执行递归函数。
preorderTransaversal构建二叉搜索树的方法,有什么建议请指教。 Node constructTreeFromPreorder(int[] arr,int start,int end)
为什么DOM树是先序,深度优先遍历? 与 BFT 等其他遍历相比,这种设计选择有什么优势? 我只是在调查 DOM standard并找到了 preceding 和 following 的定义: An
要从给定的前序遍历构造 BST,如果我尝试以与预序中给定的顺序相同的顺序插入 BST,我将得到 BST。那么,我们不通过对元素进行排序或执行任何其他算法来创建有序? 是否有一个例子表明不能仅通过插入元
题目地址:https://leetcode.com/problems/binary-tree-preorder-traversal/#/descriptionopen in new window 题
我想编写一个程序,可以构建二叉搜索树并显示 “预序”、“中序”和“后序”。 第一个输入是输入系列的数量。从第二行开始,每一行代表一个串行输入,用于构建二叉搜索树。 输入: 3 9,5,6,7,1,8,
我关注了this idea还有这个C++ code在 Java 中从 PreOrder 数组重建二叉搜索树。我不是重新发明算法,而是尝试实现伪代码。我在这里需要帮助。我没有得到正确的输出。我得到的输出
我知道如果没有中序和先序/后序遍历就无法构建树。因为对于给定的(仅 Inorder/Preorder/postorder),可能会生成更多数量的树。是否有任何算法或机制可以根据给定的(仅中序/先序/后
题目地址:https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/description/ 题目描述
有人可以教我如何使用 Proorder 和 Inorder 数组恢复二叉树吗?我见过一些例子(JavaScript 中没有),它们有点道理,但当我尝试编写时,递归调用永远不会返回完整的树。也很想看到解
我正在为一个类(class)使用 AVL 树。 我需要用散列来标识任何给定的树,为了构建该散列,我正在考虑查找树中所有元素的先序遍历,然后通过连接每个元素的散列来构建散列。 首先,我想确保相同的预订字
我需要一些递归方面的帮助。我正在尝试在 C# 中做一个二叉树,我想知道是否可以使用递归函数演示所有 Inorder/PostOrder 和 PreOrder 遍历。 我已经为 PreOrder 完成了
题目地址:https://leetcode.com/problems/construct-binary-search-tree-from-preorder-traversal/ 题目描述 Retu
题目地址:https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/descrip
我收到了一项任务,要求我必须从二叉树的 preOder 和 inOrder 返回其 postOrder 。用纸和铅笔来做这件事很容易,但任务是开发一个自动做这件事的java函数。它必须在 java 中
我已经执行过该程序几次,但我无法真正看到问题所在。基本上,它应该从 inOrder 和 preOrder 遍历数据(作为整数数组发送)重建二叉树。它是整数的二叉树。 这是我正在使用的树: 2
morris 遍历非常适用于 O(n) 时间和 O(1) 空间的 InOrder 遍历。是否有可能仅通过更改一些东西来使用相同的算法实现 PreOrder 和 PostOrder 遍历。 最佳答案 我
当我尝试打印 BST 的级别顺序时,这个问题提示了我。 这是一个 Pre-Order Sequence: 4, 1, 2, 3, 5, 6, 7, 8 In_order Sequence : 1, 2
考虑这棵树: 7 / \ / \ / \ 1 9 /
我是一名优秀的程序员,十分优秀!