二叉树

定义

二叉树是一种特定类型的树数据结构,每个节点最多有两个子节点,通常称为左子节点和右子节点
它是一种递归定义的数据结构:

  • 空树:
  • 非空树: 由一个根节点和两个不相交的二叉树(左子树和右子树)组成。

性质

  • 节点数:
    • 如果二叉树的高度为h(根节点的高度为0),则最多有 2h+1−1 个节点。
    • 第i层最多有 2i个节点(i >= 0)
  • 叶子节点数:
    对于任何非空二叉树,如果叶子节点数为n0,度为2的节点数为n2,则n0 = n2 + 1。
  • 完全二叉树:
    如果二叉树的所有叶子节点都在最后一层或倒数第二层,并且最后一层的叶子节点从左到右连续排列,则称为完全二叉树。

二叉树的遍历

二叉树的遍历是指按照某种顺序访问树中的每个节点。常见的遍历方法有三种:前序遍历、中序遍历和后序遍历。

  • 前序遍历(Pre-order Traversal):
    • 访问顺序为:根节点 -> 左子树 -> 右子树。
    • 递归实现:
        // java
        void preOrder(TreeNode node) {
            if (node == null) return;
            System.out.print(node.data + " "); // 访问根节点
            preOrder(node.left); // 遍历左子树
            preOrder(node.right); // 遍历右子树
        }
      
  • 中序遍历(In-order Traversal):
    • 访问顺序为:左子树 -> 根节点 -> 右子树。
    • 递归实现:
      // java
      void inOrder(TreeNode node) {
          if (node == null) return;
          inOrder(node.left); // 遍历左子树
          System.out.print(node.data + " "); // 访问根节点
          inOrder(node.right); // 遍历右子树
      }
      
  • 后序遍历(Post-order Traversal):
    • 访问顺序为:左子树 -> 右子树 -> 根节点。
    • 递归实现:
      //java
      void postOrder(TreeNode node) {
          if (node == null) return;
          postOrder(node.left); // 遍历左子树
          postOrder(node.right); // 遍历右子树
          System.out.print(node.data + " "); // 访问根节点
      }
      

二叉树的实现

二叉树通常通过节点类来实现,每个节点包含数据部分和指向左右子节点的指针。

  //java
  class TreeNode {
      int data;
      TreeNode left;
      TreeNode right;

      TreeNode(int data) {
          this.data = data;
          this.left = null;
          this.right = null;
      }
  }

二叉树的优缺点

  • 优点:
    具有丰富的结构,可以表示各种层次关系。
    支持高效的插入、删除和查找操作(例如在二叉搜索树中)。
  • 缺点:
    实现相对复杂,需要更多的内存来存储指针
    不平衡的二叉树可能导致退化,影响性能。
posted @   抒写  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示