二叉树
二叉树 二叉树的概念 定义:每个节点最多只能有两个子节点的一种形式称之为二叉树 二叉树的节点分为左节点和右节点 图示: 满二叉树:二叉树的所有叶子节点(无分叉的节点)都在最后一层,并且总结点数为2 n - 1,n为层数 图示: 完全二叉树:所有的叶子节点都在最后一层或者是倒数第二层,并且最后一层左边连续,倒数第二层右边连续。连续就是都是这一层的。 图示: 二叉树的遍历方式 基本概念 前序遍历:先输出父节点,在遍历左子树和右子树 中序遍历:先遍历左子树,在输出父节点,在遍历右子树 后序遍历:先遍历左子树,再遍历右子树,最后输出父节点 ** 父节点的输出先后决定其实遍历的顺序** 思路分析 创建一个二叉树 遍历: 前序遍历: 输出当前节点 判断:如果左子节点不为空,那就继续前序遍历 判断:如果右子节点不为空,那就继续前序遍历 中序遍历: 如果当前节点的左子节点不为空,则递归中序遍历 输出当前节点 如果当前节点右子节点不为空,那就递归中序遍历 后序遍历: 如果当前节点的左子节点不为空,那就递归左子节点 如果当前节点的右子节点不为空,那就递归右子节点 输出当前节点 代码实现: class BinaryTree { //二叉树有必须有根节点 private HeroNode root ; public BinaryTree ( HeroNode root ) { this . root =