二叉树总结:
树的概述
树的组成:
1.根节点
2.叶子节点
3.路径(分支)
树的深度:
从根节点开始到叶子节点的路径数最多的哪一个就是树的深度。
度:
表示一个父节点有多少个子节点。
高度:
树的深度加1
树和二叉树的区别
二叉树的每一个父节点最多只能有2个子节点。
树可以有无限个子节点。
二叉树的左子节点和右子节点是有顺序的。
二叉树的顺序是自己定义的规则。
树的遍历方式有哪几种?
前序遍历:先根,再左,之后右
中序遍历:先左,再根,之后右
后序遍历:先左,再右,之后根
层次遍历:一层一层的遍历
下面是对树的操作:
要建立一棵树,和链表一样,首先要建立节点类
public class TreeNode {
private String obj;
private TreeNode lchild; // 创建右子树
private TreeNode rchild; // 创建左子树
/**
* 构造方法
*/
public TreeNode(String obj) {
this.obj = obj;
}
/**
* 设置当前节点
* @param obj
*/
public void setObj(String obj) {
this.obj = obj;
}
/**
* 得到当前节点
* @return
*/
public String getObj() {
return obj;
}
/**
* 设置左子树
* @param lchild
*/
public void setleft(TreeNode lchild) {
this.lchild = lchild;
}
/**
* 得到左子树
* @return
*/
public TreeNode getleft() {
return lchild;
}
/**
* 设置右子树
* @param rchild
*/
public void setright(TreeNode rchild) {
this.rchild = rchild;
}
/**
* 得到右子树
* @return
*/
public TreeNode getright() {
return rchild;
}
}
建立好节点之后就是创建树。
public class DoubleTree extends JFrame{
public static void main(String[] args) {
DoubleTree tree = new DoubleTree();
//创建节点
TreeNode root = new TreeNode("根");
TreeNode node1 = new TreeNode("节点1");
TreeNode node2 = new TreeNode("节点2");
TreeNode node3 = new TreeNode("节点3");
TreeNode node4 = new TreeNode("节点4");
//设置节点之间的关系
root.setleft(node1);
root.setright(node2);
node1.setleft(node3);
node1.setright(node4);
}
这样一颗简单的树就创建好了。然后是输出树(通过递归遍历树),代码如下:
先序遍历:
public void printTree(TreeNode root){
if(root==null){
System.out.println("树为空,不能输出");
}else{
System.out.println(root.getObj());
printTree(root.getleft());
printTree(root.getright());
}
}
中序遍历:
public void printTree(TreeNode root){
if(root==null){
System.out.println("树为空,不能输出");
}else{
printTree(root.getleft());
System.out.println(root.getObj());
printTree(root.getright());
}
}
后序遍历:
public void printTree(TreeNode root){
if(root==null){
System.out.println("树为空,不能输出");
}else{
printTree(root.getleft());
printTree(root.getright());
System.out.println(root.getObj());
}
}
分享到:
相关推荐
哈夫曼树总结习题学时PPT课件.pptx 哈夫曼树是一种特殊的二叉树,它的路径长度最短,是一种非常重要的数据结构。哈夫曼树的构造是通过Huffman算法来实现的,该算法将n个权值构成n棵独立二叉树的森林,然后不断地...
线段树是一种数据结构,主要用于高效地处理动态区间查询与修改问题。它的核心思想是将一个大区间(如数组)划分成多个小的重叠区间(子树),每个子树代表一个区间的值,通过递归的方式构建一棵二叉树。在实际应用中...
最小生成树总结.cpp
线段树总结以及线段树一些经典的例题,代码写的非常简洁和漂亮。
动态搜索树是一种在数据结构领域中用于高效存储和检索数据的树形结构,常见的动态搜索树包括BSTree(二叉搜索树)、RBTree(红黑树)、BBSTree(通常指的是avl树,一种自平衡二叉搜索树)以及BTree和B+Tree。...
最小生成树是图论中的一个重要概念,特别是在解决网络优化问题时非常关键。在ACM(国际大学生程序设计竞赛)中,最小生成树算法是常见的一种解决问题的策略。本篇文章将详细探讨最小生成树及其在ACM竞赛中的应用。 ...
特别的树二叉搜索树(BST)二叉搜索树又名二叉排序树, 二叉查找树. 具有以下的性质:若它的左子树不空, 则左子树上所有结点的值均小于它的根结点的值若它的右子树
树与二叉树算法总结 树与二叉树是计算机科学中非常重要的一部分,掌握树与二叉树的算法对于数据结构和算法设计非常重要。本文将对树与二叉树的基本概念、性质、运算和应用进行总结。 一、树的基本概念 树是一种非...
### 数据结构之树与二叉树算法总结 #### 一、引言 在计算机科学领域,数据结构扮演着至关重要的角色。其中,树形结构因其灵活性和高效性被广泛应用于各种场景之中。本文将深入探讨树与二叉树的相关概念,并通过具体...
划分树是一种数据结构,用于高效解决静态区间第K大元素的问题。它结合了线段树和二分搜索的特性,在处理离线的区间查询问题时表现得尤为高效。在本文中,我们将对划分树的定义、存储结构、建立过程以及如何通过划分...
总结来说,利用多叉树构造SQL查询中的WHERE子句是一种有效的编程策略。它通过数据结构的特性解决了条件表达式的逻辑关系和层次表示问题,提高了程序的正确性和可维护性。在VB中实现这一方法,能够帮助开发者更高效地...
总结来说,“树形结构设计总结java demo”可能涵盖了如何在Java中创建树形结构、进行基本操作、以及可能的高级应用。通过分析“tms”文件中的源代码,我们可以更深入地学习和理解这些概念,提高我们的编程技能。对于...
红黑树是一种近AVL树。具有以下性质: 1)结点非红即黑; 2)根节点必须为黑色; 3)任意从根到叶子的路径不包含连续的红色节点; 4)从任意结点到其所有叶子结点的路径中,包含相同的黑色结点个数。
数据结构树算法代码总结 数据结构树算法是计算机科学中的一种基本算法,广泛应用于各个领域。该算法的代码实现是非常重要的。本文档总结了常用的树算法代码,包括递归和非递归遍历算法、深度优先搜索(DFS)和广度...
【决策树算法详解】 决策树是一种在机器学习领域广泛应用的监督学习算法,它主要用于分类问题。决策树构建的模型能够直观地表示出特征与类别之间的关系,使得模型解释性极强。以下是关于决策树的详细知识: 1. **...
下面是对`tree`树形菜单的详细总结: 1. **基本概念**: - **节点(Node)**:树形菜单中的每个元素称为节点,可以包含数据和子节点。 - **根节点(Root Node)**:树的起始节点,没有父节点。 - **子节点...
### 树结构总结及习题知识点 #### 一、概述 树是一种非线性的数据结构,它由数据元素(称为结点)按照分支关系组织而成。这种结构在自然界和社会组织中都有体现,例如家族谱系和社会组织架构。在计算机科学领域,...
### 线段树小总结 #### 知识点概述 线段树是一种高效的数据结构,主要用于处理区间查询和更新的问题。它通过将一个数组区间分割成若干个不重叠的小区间来加速查询和更新操作。线段树的每个节点通常存储关于其对应...