1.具有n个节点的树,有n-1条边

2.一种树的实现

每个节点有一个指向自己第一个孩子的指针,一个指向自己下一个兄弟的指针。

class TreeNode {
    Object value;
    TreeNode firstChild;
    TreeNode nextSibling;
}

3.树的遍历方式

主要有三种:先序、后序。
先序:先处理节点本身,再依次先序遍历子节点
后序:先后序遍历子节点,再处理节点本身

二叉树还有中序遍历方式:
中序:先中序遍历子节点,再处理节点本身

4.二叉树

定义:

二叉树是每个节点最多只有两个子节点的树

特点:

二叉树的特点是其深度一般比其节点数小很多。许多二叉树相关的算法都是因为这个性质才有很高的效率。(研究表明二叉树的平均深度为O根号N;二叉查找树的的平均深度为OlogN)

特点2:

n个节点的二叉树都有n+1个指针指向null。每个节点2个指针,共2n个。而指向真实节点的指针只有n-1个,剩下n+1个就指向null啦。

实现:

class BinaryNode {
   Object value;
    BinaryNode leftChild;
    BinaryNode rightChild;
}

例题:构造表达式树

给出一个后缀表达式,构造出一棵表达式树。
表达式树:树叶是操作数,根是操作符。
构造过程:如果输入的数字则压入栈,如果是操作符则从堆栈里弹出两项,作为操作符的左右孩子,再把操作符表示的节点压入栈里。

二次查找树

性质:对于树中每个节点X,它的左子树中所有项的值小于X中的项,而它的右子数中所有项的值都大于X中的项。
中序遍历一颗二叉查找树,就得到了元素的顺序输出。

一种实现

public class BinarySearchTree> {
    private  class BinaryNode {
    
  }
}

你可能感兴趣的:(树)