二叉树介绍

常见二叉树有完全二叉树、满二叉树

满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。 --来自百度百科

 

 

 满二叉树除了满足普通二叉树的性质,还具有以下性质:

1.满二叉树中第 i 层的节点数为 2n-1 个。

2.深度为 k 的满二叉树必有 2k-1 个节点 ,叶子数为 2k-1

3.满二叉树中不存在度为 1 的节点,每一个分支点中都两棵深度相同的子树,且叶子节点都在最底层。

4.具有 n 个节点的满二叉树的深度为 log2(n+1)。

完全二叉树:如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。

 

 

 二叉树的遍历方式:

前序遍历:中左右

中序遍历:左中右

后续遍历:左右中

即以中间节点的位置来定义

以下图为例:

前序遍历:1245367 

即先中间的根节点,此时为1;然后是左边的节点(245),依次遍历为左边节点的2,然后继续左边的节点4,左边没有节点后再右边节点5;当整个左边都遍历后再遍历右边的节点(367),依次遍历右边节点3,然后遍历右边的左节点6,当右边的左节点遍历完成后再遍历右边的右节点7

中序遍历:4251637

按照之前的定义,先遍历左边,左边先遍历左节点4 、2 ,左边的左节点遍历完成后再遍历左边的右节点5;左边遍历完成后遍历中间即根节点1;中间遍历完成后遍历右边,先遍历右边的左节点即6、3,右边的左节点遍历完成后再遍历右边的右节点7

后序遍历:4526731

遍历顺序先左右再中,首先遍历左边的左右节点4 、5,左右遍历完成后遍历中2,左边遍历完成后遍历右边;先右边的左右节点 6、7,再遍历中3,右边节点遍历完成后在遍历中节点即根节点1

代码实现

前序遍历

复制代码
def preorderTraversal(root):
    ans = []
    def traversal(root):
          if root == None:
              return
          ans.append(root.val) # 中
          traversal(root.left)    # 左
          traversal(root.right)   # 右
    traversal(root)
    return result
复制代码

中序遍历

复制代码
def inorderTraversal(root):
      ans= []
      def traversal(root):
            if root == None:
                return
            traversal(root.left)    #
            ans.append(root.val) #
            traversal(root.right)   #
      traversal(root)
      return result
复制代码

后序遍历

复制代码
def postorderTraversal(root):
      result = []
      def traversal(root):
            if root == None:
                return
            traversal(root.left)    #
            traversal(root.right)   #
            result.append(root.val) #
      traversal(root)
      return result
复制代码
posted @   *小白*  阅读(248)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示