📚 一、数据结构定义对比
1.1 节点结构定义
二叉树节点结构(Binary Tree Node):
// 二叉树节点定义structTreeNode{intval;// 节点值TreeNode*left;// 指向左子节点的指针TreeNode*right;// 指向右子节点的指针// 构造函数TreeNode():val(0),left(nullptr),right(nullptr){}TreeNode(intx):val(x),left(nullptr),right(nullptr){}TreeNode(intx,TreeNode*left,TreeNode*right):val(x),left(left),right(right){}};N叉树节点结构(N-ary Tree Node):
// N叉树节点定义classNode{public:intval;// 节点值vector<Node*>children;// 存储所有子节点的动态数组// 构造函数Node():val(0){}Node(int_val):val(_val){}Node(int_val,vector<Node*>_children):val(_val),children(_children){}};1.2 结构特性对比表
| 特性 | 二叉树 (Binary Tree) | N叉树 (N-ary Tree) |
|---|---|---|
| 子节点数量 | 最多2个 | 任意数量(0-N个) |
| 子节点命名 | 固定的 left/right | 无固定命名,通过索引访问 |
| 存储方式 | 两个独立指针 | 动态数组或链表 |
| 内存占用 | 固定大小(2个指针) | 动态变化 |
| 访问复杂度 | O(1) 直接访问 | O(1) 数组索引访问 |
| 空间效率 | 高效(无额外开销) | 可能有额外数组开销 |
🏗️ 二、数据结构声明与初始化
2.1 二叉树创建示例
// 创建简单的二叉树TreeNode*createBinaryTree(){// 1// / \ // 2 3// / \ // 4 5TreeNode*node4=newTreeNode(4)