[二叉数]二叉树基础知识(刷题所需知识)

163 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

一、二叉树的分类

二叉树就是最多有两个孩子的树,如果有三个孩子就是三叉树!

二叉树可分为四类:

  • 满二叉树:只有度为0和度为2的节点;度的含义,简单说就是左右孩子的个数,度为0没有孩子,度为1,就是只有一个孩子,度为2就是有左右两个孩子!满二叉树的节点的个数为:2^(k-1),k为层数
  • 完全二叉树:只有最后一层没有完全占满,并且最后一层是从左到右没有空的
  • 二叉搜索树:每个节点所有左孩子小于当前节点,所有右孩子大于当前节点!
  • 平衡二叉树(AVL):每个节点的左右孩子的高度差的绝对值小于等于1。

可以看看图,思考思考这四类到底怎么区别,为什么画叉的不是!

理论知识.png


二、二叉树的存储方式

存储方式可以是链表存储,也可以是顺序存储(数组);

存储方式.png


三、二叉树的遍历方式

遍历方式分为两大类:深度优先遍历和从广度优先遍历。

遍历方式.png

深度优先遍历分为:

  • 前序遍历(根左右):1245367
  • 中序遍历(左根右):4251637
  • 后序遍历(左右根):4526731

广度优先遍历就是层次遍历:1234567


四、二叉树的定义(JAVA)

public class TreeNode{
    int val;
    TreeNode left;
    TreeNode right;
    public TreeNode(){}
    public TreeNode(int val){
        this.val = val;        
    }
    public TreeNode(TreeNode left, TreeNode right,,int val){
        this.val = val;        
        this.left = left;
        this.right = right;
    }
}

感谢大家的阅读,我是Alson_Code,一个喜欢把简单问题复杂化,把复杂问题简单化的程序猿! ❤