外汇网站怎么做优化,济宁住房与建设网站,网站图片链接到视频怎么做,icp许可证对网站的要求二叉树 二叉树是一种非线性数据结构#xff0c;代表“祖先”与“后代”之间的派生关系#xff0c;体现了“一分为二”的分治逻辑。与链表相似#xff0c;二叉树的基本单元是节点#xff0c;每个节点包含值#xff0c;左子节点的索引#xff0c;右子节点的索引 /* 二叉树节…二叉树 二叉树是一种非线性数据结构代表“祖先”与“后代”之间的派生关系体现了“一分为二”的分治逻辑。与链表相似二叉树的基本单元是节点每个节点包含值左子节点的索引右子节点的索引 /* 二叉树节点结构体 */
struct TreeNode {int val; // 节点值TreeNode *left; // 左子节点指针TreeNode *right; // 右子节点指针TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};当给定一个二叉树的节点时我们将该节点的左子节点及其以下节点形成的树称为该节点的左子树同理可得右子节点及其以下节点形成的树称为该节点的右子树。 在给定的二叉树中除了叶子节点其他所有节点均包含子节点和非空子树 二叉树的常见术语 根节点位于二叉树顶层的节点没有父节点叶子节点没有字节的的节点左右指针均为null边连接两个节点的线段节点所在的层从顶到底递增根节点的层数为1节点的度节点的字节点的个数在二叉树中节点的度的取值范围012二叉树的高度从根节点到最远叶子节点所经过的边的数量节点的深度从根节点到该节点边的数量节点的高度从最远的叶子节点到该节点边的数量 二叉树的基本操作
/* 初始化二叉树 */
// 初始化节点
TreeNode* n1 new TreeNode(1);
TreeNode* n2 new TreeNode(2);
TreeNode* n3 new TreeNode(3);
TreeNode* n4 new TreeNode(4);
TreeNode* n5 new TreeNode(5);
// 构建节点之间的引用指针
n1-left n2;
n1-right n3;
n2-left n4;
n2-right n5;/* 插入与删除节点 */
TreeNode* P new TreeNode(0);
// 在 n1 - n2 中间插入节点 P
n1-left P;
P-left n2;
// 删除节点 P
n1-left n2;常见二叉树的类型
完美二叉树**所有层的节点都被填满。**所有叶子节点的度为0其余所有节点的度为2完全二叉树只有最底层的节点没有被填满并且最底层的节点靠左填满完满二叉树除了叶子节点外其余所有节点的度为2平衡二叉树任意节点的左子树和右子树的高度之差的绝对值不超过1