Tag: 二叉树

预订打印二进制树与缩进

如何为每个后续级别预先打印带有缩进(3个空格)的二叉树。 此时,我通过使用辅助方法递归打印出树,但我不知道如何编写缩进编码。 这是我到目前为止: public void print() { printPreorder(root); System.out.println(); } private void printPreorder(BinaryTreenode node) { System.out.println(node.getData() + ” “); if (node.getLeft() != null) { printPreorder(node.getRight()); } if (node.getRight() != null) { printPreorder(node.getRight()); } } 我的直接想法是放入一个计数器,并在每次递归调用该方法时增加它,然后为每个增量缩进三个空格,但我不确定这是执行此操作的最佳方法。

如何在Java中将节点插入完整的二叉树?

众所周知,当插入完整的二叉树时,我们必须从左到右填充所有叶子的所有叶子。 我有以下方法将节点插入完整的二叉树。 //fields private T item; private int size; private CBTree left, right; //add method public void add(T item) { if(left == null) { left = new CBTree(item); size += left.size; } else if(right == null) { right = new CBTree(item); size += right.size; } else if(!((left.left != null) && (left.right != null)) && ((right.left […]

从二叉树中删除叶子没有正确表示

我一直致力于从头开始创建二叉树,而不是使用内置库。 我正在开发一个名为“pruneLeaves”的函数。 工作是删除树的所有叶子; 没有孩子的节点。 当我使用断点逐步执行该函数时,它似乎正在删除叶子,甚至打印出它确实正在删除正确的节点。 但是,当我之后在主函数中显示树时,节点仍然存在! 我已经试了好几个小时来解决这个问题,我在俯瞰什么?! 节目输出: Num nodes = 9 Pruning. 12 Leaf removed 9 Leaf removed 4 Leaf removed Tree after pruning.. 3 4 5 6 7 8 9 11 12 // Recursive helper. Accepts BinaryNode as a parameter private BinaryNode pruneLeaves(BinaryNode t) { // If we have no left child AND […]

Java:二叉树递归方法

我是java的新手,我们的一个任务要求我创建一个包含int值节点的二叉树。 我的教授希望我们使用一个包含main方法的类。 我应用了两个递归方法,一个用于插入节点,另一个用于显示现有节点。 然而,每当我运行我的代码时,控制台只显示我输入的最新节点。 我使用的方法有问题吗? 这是我到目前为止: import java.util.Scanner; public class node { private int value; static node root; public node leftLink; public node rightLink; public node(int v) { this.value = v; } public int getValue() { return value; } static void traverseShow() { if(root.leftLink != null){ root = root.leftLink; traverseShow(); } System.out.println(root.getValue()); if(root.rightLink != null) […]

使用Java和递归的二级树遍历级别顺序遍历

我在使用递归时遇到二叉树的级别顺序遍历问题。 我输入以下值:50,60,70,30,20,10这是我正在使用的代码: public void levelOrder(Node localRoot){ if(localRoot != null){ if(localRoot.leftChild != null && localRoot.rightChild != null){ System.out.print(localRoot.iData + ” “); System.out.print(localRoot.leftChild.iData + ” “); System.out.print(localRoot.rightChild.iData + ” “); levelOrder(localRoot.leftChild); levelOrder(localRoot.rightChild); } else if(localRoot.rightChild == null && localRoot.leftChild == null){ ; } else if(localRoot.rightChild == null){ System.out.print(localRoot.leftChild.iData + ” “); //levelOrder(localRoot.leftChild); } else{ System.out.print(localRoot.rightChild.iData + ” […]

从inorder和level遍历构造二叉树

在给定顺序和级别遍历的情况下,需要帮助找到构造二叉树的方法。 是否可以使用递归来实现,因为必须通过使用队列来完成级别遍历?

JAVA:二叉树

在这里,我正在尝试制作二叉树,以便我可以对它们进行不同的操作。 import java.util.*; import java.lang.*; public class Main { public static void main(String[] args) { } } //Building Binary Trees class bTree { static class Node { //remember to initilize a root String value; Node left, right; Node(String value, Node left, Node right) { this.value = value; this.left = left; this.right = right; } Node(String […]

将中缀表达式(带括号)转换为二叉树

作为Java赋值的一部分,我必须使用输入算术表达式并将其存储在二叉树中。 除了我在表达式的字符串中读取的部分并将其存储在二叉树中之外,我已完成了赋值所需的所有操作。 我创建了一个名为BinaryTree的类。 它唯一的领域是一个名为root的treenode。 此treenode被定义为BinaryTree中的内部类。 它有3个字段,一个通用数据字段,以及两个类型为BinaryTree的子节点(左和右)。 我很难定义一个用于读取表达式的算法,例如 (5 *(2 + 3)^ 3)/ 2 并将其存储在这样的树中 / ^ 2 * 3 5 + 2 3 任何人都可以帮助算法吗?

制作二叉搜索树

当我有一个包含{3,2,6,7,…,99}等100个元素的数组列表时,如何制作BST?

用Java重写C代码以构造完整的二叉树

我想编写一个函数来从给定的前序和后序数组构造一个完整的二叉树。 我找到了链接http://www.geeksforgeeks.org/full-and-complete-binary-tree-from-given-preorder-and-postorder-traversals/ ,它提出了以下C代码: struct node* constructTreeUtil (int pre[], int post[], int* preIndex, int l, int h, int size) { // Base case if (*preIndex >= size || l > h) return NULL; // The first node in preorder traversal is root. So take the node at // preIndex from preorder and make it root, and […]