树的节点bean
public class TreeNode {
//节点的内容
private NodeBean data ;
//左节点
private TreeNode left;
//右节点
private TreeNode rigth;
//构造函数
public TreeNode(){
data = new NodeBean();
}
}
二叉树类
public class Tree {
private TreeNode root;
Tree(){
root = new TreeNode();
NodeBean nodeBean = new NodeBean();
nodeBean.setKey(60);
root.setData(nodeBean);
}
public NodeBean find(int key){
return null;
}
//给树插入数据
public void insert(TreeNode root,TreeNode bean) {
if (root == null) {
root = bean;
} else {
if (bean.getData().getKey() < root.getData().getKey()) {
if (root.getLeft() == null) {
root.setLeft(bean);
} else{
insert(root.getLeft(),bean);
}
} else {
if (root.getRigth() == null) {
root.setRigth(bean);
} else{
insert(root.getRigth(),bean);
}
}
}
}
//中序遍历二叉树
public String middleIterator(TreeNode tree){
StringBuilder sb = new StringBuilder();
if (tree == null) {
return sb.toString();
} else{
sb.append(tree.getData().getKey()+",");
sb.append(middleIterator(tree.getLeft()));
sb.append(middleIterator(tree.getRigth()));
}
return sb.toString();
}
public static void main(String[] args) {
Tree myTree = new Tree();
TreeNode treeNode = new TreeNode();
treeNode.getData().setKey(50);
TreeNode treeNode1 = new TreeNode();
treeNode1.getData().setKey(45);
TreeNode treeNode2 = new TreeNode();
treeNode2.getData().setKey(30);
TreeNode treeNode3 = new TreeNode();
treeNode3.getData().setKey(55);
TreeNode treeNode4 = new TreeNode();
treeNode4.getData().setKey(70);
myTree.insert(myTree.root, treeNode);
myTree.insert(myTree.root, treeNode1);
myTree.insert(myTree.root, treeNode2);
myTree.insert(myTree.root, treeNode3);
myTree.insert(myTree.root, treeNode4);
String result = myTree.middleIterator(myTree.getRoot());
System.out.println(result);
}
分享到:
相关推荐
为了完整地使用这个程序,我们需要在主类中创建一个`BinarySearchTree`实例,插入一些节点,然后调用`inorder()`方法来打印出中序遍历的结果。例如: ```java public static void main(String[] args) { ...
非递归中序遍历使用一个辅助堆栈来避免函数调用的开销。其基本步骤如下: 1. 初始化一个空堆栈,设置当前节点为根节点。 2. 当当前节点不为空或堆栈未空时,循环执行以下操作: a. 如果当前节点不为空,将其压入...
本主题主要关注的是二叉树的建立以及它的遍历方法——中序遍历和后序遍历。 首先,我们需要理解如何建立二叉树。二叉树的建立通常有两种方式:一种是通过序列化数据(如字符串或数组)来构建,另一种是动态创建。...
本话题主要涉及使用Java语言,通过给定的前序和中序遍历结果来构造二叉树,以及对构造出的二叉树进行后序遍历和判断是否为平衡二叉树。以下是关于这些知识点的详细解释: 1. **二叉树**: 二叉树是一种特殊的树形...
在Java中,`TreeNode`类定义了一个简单的二叉树节点,包含一个整数值`value`,以及指向左子节点`left`和右子节点`right`的引用。`BinaryTree`类包含了与二叉树相关的操作,如获取树的高度`getTreeHeight()`和各种...
这一过程涉及到对二叉树节点的修改,添加两个额外的指针,称为“前向线索”(in-order predecessor pointer)和“后向线索”(in-order successor pointer),分别指向中序遍历中的前一个和后一个节点。 首先,我们...
在Java中,你可以通过创建一个类来表示二叉树的节点,这个类通常包含三个属性:值、左子节点和右子节点。以下是一个简单的二叉树节点类的实现: ```java public class TreeNode { int val; TreeNode left; ...
### Java二叉树算法实现:节点插入与遍历示例代码 #### 一、核心概念与定义 在深入了解本文档中的代码之前,我们先来回顾一下二叉树的基本概念: - **二叉树**是一种非线性的数据结构,每个节点最多有两个子节点...
首先,我们需要定义一个二叉树节点类,它包含三个字段:数据、左子节点、右子节点,以及两个线索指针,分别用于前序和中序遍历。 ```java public class TreeNode { int data; TreeNode left, right; boolean ...
二叉树的遍历主要包括前序遍历、中序遍历和后序遍历。 1. **前序遍历**:先访问根节点,再遍历左子树,最后遍历右子树。 2. **后序遍历**:先遍历左子树,再遍历右子树,最后访问根节点。 例如,前序遍历的递归...
这里以MySQL为例,提供一个模拟前序遍历的例子: ```sql WITH RECURSIVE tree AS ( SELECT id, value, parent_id, 1 as level FROM my_table WHERE parent_id IS NULL -- 根节点 UNION ALL SELECT t.id, t....
代码实现: 二叉树的查找、插入、删除和输出根节点到当前节点的路径 二叉树的前序遍历,中序遍历和后续遍历 TreeNode.java --定义树节点 Mytree.java----创建树结构和上述功能函数 TestTree.java --测试上述的功能
本资料包主要探讨了如何在Java中创建二叉树以及其三种基本遍历方法:前序遍历、中序遍历和后序遍历。首先,我们需要理解二叉树节点的定义,它通常包含一个数据字段和两个指向子节点的引用。 1. **二叉树节点定义**...
否则,使用一个临时变量`temp`回溯到合适的位置(根据输入元素与当前节点值的大小关系)并插入新节点。 二叉树的遍历主要有三种方式:前序遍历、中序遍历和后序遍历。这些遍历方法主要用于访问树的所有节点,每种...
1. **节点(Node)**: 节点是二叉树的基本构建单元,通常包含两个子节点(左子节点和右子节点)以及一个存储数据的属性。在`Node.java`文件中,我们可以预期看到一个`Node`类的定义,该类可能包含以下属性和方法: -...
二叉树是一种基础且重要的...C、C++和JAVA三种语言的实现源码提供了一个直观的学习平台,有助于开发者深入理解二叉树的构造和操作。通过阅读和分析这些源码,你可以更好地领悟二叉树的精髓,并将其应用到实际项目中。
二叉树有三种基本的遍历方式:前序遍历、中序遍历和后序遍历。 1. **前序遍历**:首先访问根节点,然后遍历左子树,最后遍历右子树。在代码实现中,通常通过递归方式实现,先调用当前节点的前序遍历方法,然后递归...
平衡二叉树建立过程分析,从第一个元素的插入,截止至最后一个元素,均以详细的画图展示