2026/4/2 8:33:51
网站建设
项目流程
属于c2c的网站是,网站建设怎样宣传比较好,商务网络设计实验报告,东阳科技网站建设目录
1.二叉树的中序遍历
a.核心思想
b.思路
c.步骤
2.动态多态的实现原理
a.核心思想
b.实现逻辑
c.示例逻辑 1.二叉树的中序遍历
94. 二叉树的中序遍历 - 力扣#xff08;LeetCode#xff09;https://leetcode.cn/problems/binary-tree-inorder-traversal/
/*** …目录1.二叉树的中序遍历a.核心思想b.思路c.步骤2.动态多态的实现原理a.核心思想b.实现逻辑c.示例逻辑1.二叉树的中序遍历94. 二叉树的中序遍历 - 力扣LeetCodehttps://leetcode.cn/problems/binary-tree-inorder-traversal//** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), * right(right) {} * }; */ class Solution { public: void inorder(TreeNode* root, std::vectorint res) { if (root nullptr) return; inorder(root-left, res); res.push_back(root-val); inorder(root-right, res); } std::vectorint inorderTraversal(TreeNode* root) { vectorint res; inorder(root, res); return res; } };a.核心思想利用二叉树中序遍历的规则左子树 - 根节点 - 右子树通过递归的方式依次访问二叉树的节点将访问到的节点值按顺序存储到结果数组中。b.思路定义一个递归函数该函数接收当前节点和一个用于存储结果的引用数组作为参数。在递归函数中首先判断当前节点是否为空若为空则直接返回否则先递归遍历左子树然后将当前节点的值加入结果数组最后递归遍历右子树。c.步骤① 定义递归函数inorder参数为当前节点root和结果数组的引用res。② 在inorder函数中若root为空返回。③ 递归调用inorder遍历左子树。④ 将root的值加入res。⑤ 递归调用inorder遍历右子树。⑥ 在主函数中初始化结果数组调用inorder函数返回结果数组。2.动态多态的实现原理a.核心思想动态多态通过虚函数表vtable 虚指针vptr 实现运行时绑定根据对象实际类型调用对应函数。b.实现逻辑① 虚函数表vtable编译器为每个含虚函数的类生成一张表存储该类所有虚函数的实际地址派生类覆盖基类虚函数时更新表项。② 虚指针vptr对象内存首地址存放指向自身类vtable的指针由构造函数初始化。③ 动态绑定通过基类指针/引用调用虚函数时通过vptr定位vtable根据函数偏移量跳转到实际函数执行非静态绑定。c.示例逻辑class Base { public: virtual void func() { /*...*/ } // 基类虚函数 }; class Derived : public Base { public: void func() override { /*...*/ } // 覆盖基类虚函数 }; int main() { Base* obj new Derived(); obj-func(); // 运行时调用Derived::func() return 0; }关键obj-func()通过obj的vptr找到Derived的vtable执行第0项func对应位置的实际函数。希望这些内容对大家有所帮助感谢大家的三连支持