二叉树

来源:互联网 发布:udp端口号可用范围 编辑:程序博客网 时间:2024/06/01 09:11

二叉树(binary tree)每个节点都不能有对于两个的儿子。二叉树平均深度为;对于二叉查找树,其深度平均值是;

1.实现

二叉树节点最多有两个子节点,所以可以保存直接链接到它们的链(树的话子节点个数不确定,保存所有到子节点的直接链接不可行)。

二叉树节点类,元素(element)信息加上两个到其他节点的引用(left和right):

class BinaryNode{  Object element;  BinaryNode left;  BinaryNode right;}

2.表达式树

表达式树树叶是操作数,其他节点是操作符,如下图所示:


中序遍历:递归打印左子树,再打印根,再打印右子树。

后序遍历:递归打印左子树、右子树,然后打印根节点,得到的表达式为后缀表示法表示abc*+de*f+g*+。

前序遍历:先打印根节点,在递归打印右子树和左子树,得到的表达式为前缀表示法表示++a*bc*+*defg。

构造表达式树:把后缀表达式转变成表达式树

一次一个符号读入表达式;

如果符号是操作数,那么建立一个单节点树并将它存入栈中;

如果符号是操作符,那么就从栈中弹出两棵树T1和T2并形成一棵新的树(T1先弹出),该树的根是操作符,它的左右儿子分别是T2和T1,然后将这课树压入栈中。




原创粉丝点击