二叉树

本文讲解二叉树的基本操作:

  • 查找节点

  • 计算树的高度

  • 清空树

  • 递归遍历:先序遍历、中序遍历、后序遍历

  • 按层遍历

  • 前序、中序的非递归遍历

  • 树的路径

  • 树的左旋和右旋

来看一下树的结构:

class TreeNode {
    String value;
    TreeNode left;
    TreeNode right;
    public TreeNode() {

    }
    public TreeNode(String value) {
        this.value = value;
    }
}

首先,为了方便后面看到效果,先手动初始化一个有4个节点的二叉树:

一、查找节点

二、计算树的深度

三、清空树

四、递归遍历

五、按层遍历

运行结果:

六、先序,中序遍历的非递归实现

七、树的路径

八、二叉树的左旋和右旋

  • 左旋:节点右儿子的左儿子(若存在)变为节点的右儿子,节点变为右儿子的左儿子;

  • 右旋:节点左二子的右儿子(若存在)变为节点的左二子,节点变为左二子的右儿子。

举个例子:

可以看到,如果旋转前是一个二叉排序树,那么旋转后仍然是一个二叉排序树。

Last updated

Was this helpful?