一文搞懂二叉树

熟悉的二叉树

二叉树分类

满二叉树:树中只有度为2和度为0的节点,且度为0的节点都在最后一层上的树称为满二叉树
在这里插入图片描述
完全二叉树:
只有最后一层节点不满外,其他层的节点都是满的,且最后一层的所有节点都靠向左侧,完全二叉树的节点个数为2^n-1+(最后一层的节点数)
在这里插入图片描述
二叉搜索树:树中的每棵子树的左子树的所有节点值均小于根节点,右子树的所有节点值大于根节点
在这里插入图片描述
平衡二叉树:树中的每棵子树的左右子树高度的绝对值不超过1
在这里插入图片描述

二叉树存储方式

二叉树可以为链式存储,可以为线性存储。顺序存储的元素在内存是连续分布的,而链式存储则是通过指针把分布在各个地址的节点串联一起。
链式存储:在这里插入图片描述
顺序存储:
在这里插入图片描述
用数组来存储二叉树如何遍历的呢?
如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2
但是用链式表示的二叉树,更有利于我们理解,所以一般我们都是用链式存储二叉树。

二叉树的遍历方式

二叉树的遍历分为深度遍历和广度遍历:
深度遍历:

  • 前序遍历(中左右)— 迭代、递归
  • 中序遍历(左中右)— 迭代、递归
  • 后序遍历(左右中)— 迭代、递归
    广度遍历:
  • 层次遍历— 迭代

二叉树的定义

java:

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

二叉树相关题目:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值