基本数据结构的定义要自己会手写1(二叉树)
(C++版本)
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
// 写三个构造函数,提供多种创建节点的方式
// 1、无参构造
TreeNode() : val(0),left(nullptr),right(nullptr){}
// 2、单参构造
TreeNode(int x) : val(x),left(nullptr),right(nullptr){}
// 3、全参构造
TreeNode(int x,TreeNode *left,TreeNode *right) : val(x),left(left),right(right){}
};
(补充解释)
三个构造函数各自的作用
TreeNode() : val(0), left(nullptr), right(nullptr) {}无参构造函数(默认构造函数)
创建一个节点,数值默认为
0,左右指针为空。适用场景:先创建空节点,后续再给
val赋值;或者在某些容器(如vector<TreeNode>)中需要默认构造。
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}单参数构造函数
创建节点时指定数值
x,左右指针自动为空。适用场景:创建叶子节点,或者暂时只知道节点值,还不知道左右孩子的情况。
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}全参数构造函数
创建节点时同时指定数值和左右孩子指针。
适用场景:构建一个已经知道完整子树结构的节点,比如从下往上构建二叉树时,直接传入已有的左右子节点。
