【详细讲解知识点】二叉树

一、种类:

1. 满二叉树  深度为k  节点数量为2^k-1

2. 完全二叉树  除了底层以外 其他层都是满的 底层:从左到右节点连续

3. 二叉搜索树 

是一个有序树。

若左子树不为空,则左子树上所有节点的值都小于它的根节点的值

若右子树不为空,则右子树上所有节点的值都大于它的根节点的值

它的左、右子树也分别为二叉排序树

二、存储方式

1. 链式存储:用指针

2. 顺序存储:用数组

如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2。

三、二叉树的遍历方式

1. 深度优先遍历:先往深走,遇到叶子节点再往回走

(1)前序遍历(递归法,迭代法) 中左右

(2)中序遍历(递归法,迭代法) 左中右

(3)后序遍历(递归法,迭代法) 左右中

【记忆技巧:前中后指的是中间节点的遍历顺序】

2. 广度优先遍历:一层一层的去遍历

(1)层次遍历(迭代法)

(stack就是递归的一种实现结构)

四、二叉树的定义

class TreeNode:
    def __init__(self, val, left = None, right = None):
        self.val = val
        self.left = left
        self.right = right

leetcode题目中一般都给定义好了,但是还是要掌握是怎么写定义的,面试的时候有可能会考察写出二叉树的定义。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值