数据结构与算法Java(七):二叉树基础(上)

本文介绍了树的基本概念,包括节点关系、高度、深度等,重点讲解了二叉树的特性,如满二叉树、完全二叉树的定义及二叉树的存储方式和遍历方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、树

相关节点关系:A是B的父节点;B是A的子节点;BCD是兄弟节点;E是根节点;没有子节点的节点叫做叶子节点或叶节点,如GHIJKL

节点的高度(从下往上) = 节点到叶子节点的最长路径(边数)

节点的深度(从上往下) = 根节点到这个节点所经历的边的个数

节点的层数 = 节点的深度 + 1

树的高度 = 根节点的高度

二、二叉树

1、满二叉树:叶子节点全都在最底层,除叶子结点外,每个节点都有左右两个子节点

     完全二叉树:叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其它层的结点个数都要达到最大

2、二叉树的存储方式:

1)基于指针或者引用的二叉链式存储法

2)基于数组的顺序存储法,其中左子结点的下标为2*i;右子节点为2*i+1

3、二叉树的遍历:

  1. 前序遍历:对于树中的任意节点来说,先打印这个节点,然后再打印它的左子树,最后打印它的右子树
  2. 中序遍历:对于书中的任意节点来说,先打印左子树,然后再打印它本身,最后打印它的右子树。(终须遍历二叉查找树,可以输出有序的数据序列,时间复杂度是O(N))
  3. 后序遍历:对于树中的任意节点来说,先打印它的左子树,然后再打印右子树,最后再打印节点本身

//个人的记忆方式是:三种顺序对应节点本身,都按照先左后右

三种遍历方法都是递归过程时间复杂度是O(n)

前序遍历的递推公式:
preOrder(r) = print r->preOrder(r->left)->preOrder(r->right)

中序遍历的递推公式:
inOrder(r) = inOrder(r->left)->print r->inOrder(r->right)

后序遍历的递推公式:
postOrder(r) = postOrder(r->left)->postOrder(r->right)->print r

 

 

参考资料:极客时间的《数据结构与算法之美》王争

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值