编程语言
首页 > 编程语言> > 《左神算法初级班》第四节课:二叉树结构

《左神算法初级班》第四节课:二叉树结构

作者:互联网

目录:

1)二叉树结构
2)二叉树的递归与非递归遍历
3)打印二叉树
4)判断搜索二叉树
5)判断完全二叉树
6)判断平衡二叉树
7)折纸问题
8)二叉树节点的前驱节点与后继节点
9)二叉树的序列化和反序列化



题目一:实现二叉树的先序、中序、后序遍历,包括递归方式和非递归 方式

//三种遍历:递归

//三种遍历:非递归


题目二:如何直观的打印一颗二叉树

在这里插入代码片

题目三:在二叉树中找到一个节点的后继节点在这里插入图片描述

//找某个节点的后继节点

//找某个节点的前驱节点


题目四:介绍二叉树的序列化和反序列化

//先序序列化

//先序反序列化

//层序序列化

//层序反序列化


题目五:折纸问题

在这里插入图片描述

在这里插入代码片

题目六:判断一棵二叉树是否是平衡二叉树

//递归


题目七:判断一棵树是否是搜索二叉树、判断一棵树是否是完全二叉树

判断逻辑很简单,但是不好想:

  • 按层遍历二叉树,从每层的左边向右边依次遍历所有的节点。
  • 如果一个节点有右孩子无左孩子,那一定不是完全二叉树。
  • 如果无右孩子,两种可能,一种是左右都没有,一种是只有左(左右孩子不全)。则要开始“叶节点”的阶段,之后遍历到的节点必须是叶节点。
  • 则是完全二叉树。
//中序遍历的非递归程序改两行代码即可。


//判断一棵树是完全二叉树


题目八:已知一棵完全二叉树,求其节点的个数

要求:时间复杂度低于O(N),N为这棵树的节点个数。

  • 看根节点的左子树多高,看右子树能不能到左边界。如果其右子树的左边界到了最后一层,则证明其左子树是满二叉树,可以根据满二叉树的公式来计算左子树的总节点数;如果没到最后一层,则“右子树”是满二叉树,只不过高度-1。
  • 总之,总有一边可以用满二叉树的公式来求节点数,另一边就用递归。
在这里插入代码片

标签:左子,遍历,递归,左神,二叉树,序列化,节点,初级班
来源: https://blog.csdn.net/gx17864373822/article/details/114983256