当前位置: 首页 > news >正文

毕节市建设厅网站百度获客平台怎么收费的

毕节市建设厅网站,百度获客平台怎么收费的,建设中专网站,招聘网站建设需求分析题目 给定一个二叉树的根节点 root #xff0c;返回 它的 中序 遍历 。 示例 示例 1#xff1a; 输入#xff1a;root [1,null,2,3] 输出#xff1a;[1,3,2]示例 2#xff1a; 输入#xff1a;root [] 输出#xff1a;[]示例 3#xff1a; 输入#xff1a;root […题目 给定一个二叉树的根节点 root 返回 它的 中序 遍历 。 示例 示例 1 输入root [1,null,2,3] 输出[1,3,2]示例 2 输入root [] 输出[]示例 3 输入root [1] 输出[1] 分析 二叉树的中序遍历顺序是先遍历左子树然后访问根节点最后遍历右子树。 递归法 递归是实现二叉树中序遍历最简单的方法其基本思想是根据中序遍历的定义递归地处理左子树、根节点和右子树。 时间复杂度O()  为二叉树节点的个数 空间复杂度O()递归调用栈的空间最坏情况下二叉树退化为链表递归深度为  class Solution { public:vectorint inorderTraversal(TreeNode* root) {vectorint result;inorder(root, result);return result;} private:void inorder(TreeNode* node, vectorint result) {if (node nullptr) {return;}// 递归遍历左子树inorder(node-left, result);// 访问根节点result.push_back(node-val);// 递归遍历右子树inorder(node-right, result);} }; 迭代法 迭代实现通常使用栈来模拟递归调用的过程。具体步骤如下 从根节点开始将左子树的节点依次压入栈中直到左子树为空弹出栈顶节点访问该节点的值处理该节点的右子树重复步骤 1 和 2 时间复杂度O()  为二叉树节点的个数 空间复杂度O()递归调用栈的空间最坏情况下二叉树退化为链表递归深度为  class Solution { public:vectorint inorderTraversal(TreeNode* root) {vectorint result;stackTreeNode* nodeStack;TreeNode* current root;while (current ! nullptr || !nodeStack.empty()) {// 将左子树的节点依次压入栈中while (current ! nullptr) {nodeStack.push(current);current current-left;}// 弹出栈顶节点并访问current nodeStack.top();nodeStack.pop();result.push_back(current-val);// 处理右子树current current-right;}return result;} }; 知识充电 二叉树性质 若规定根节点的层数为 1则一棵非空二叉树的第 i 层上最多有  个节点 若规定根节点的层数为 1则深度为 h 的二叉树的最大节点数是  对任何一棵二叉树如果其叶节点个数为 度为 2 的非叶节点个数为 则有 常见操作 初始化 #include iostream #include vector #include stack// 二叉树节点定义 struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} }; 插入节点 // 插入节点以二叉搜索树为例 TreeNode* insertNode(TreeNode* root, int val) {if (root nullptr) {return new TreeNode(val);}if (val root-val) {root-left insertNode(root-left, val);} else {root-right insertNode(root-right, val);}return root; } int main() {TreeNode* root nullptr;root insertNode(root, 50);insertNode(root, 30);insertNode(root, 20);insertNode(root, 40);insertNode(root, 70);insertNode(root, 60);insertNode(root, 80);return 0; } 查找节点 // 查找节点以二叉搜索树为例 TreeNode* searchNode(TreeNode* root, int val) {if (root nullptr || root-val val) {return root;}if (val root-val) {return searchNode(root-left, val);} else {return searchNode(root-right, val);} } // 辅助函数插入节点 TreeNode* insertNode(TreeNode* root, int val) {if (root nullptr) {return new TreeNode(val);}if (val root-val) {root-left insertNode(root-left, val);} else {root-right insertNode(root-right, val);}return root; } int main() {TreeNode* root nullptr;root insertNode(root, 50);insertNode(root, 30);insertNode(root, 20);insertNode(root, 40);insertNode(root, 70);insertNode(root, 60);insertNode(root, 80);TreeNode* found searchNode(root, 40);if (found) {std::cout Found node with value: found-val std::endl;} else {std::cout Node not found. std::endl;}return 0; } 删除节点 // 找到右子树中的最小节点 TreeNode* findMin(TreeNode* node) {while (node-left ! nullptr) {node node-left;}return node; } // 删除节点以二叉搜索树为例 TreeNode* deleteNode(TreeNode* root, int val) {if (root nullptr) {return root;}if (val root-val) {root-left deleteNode(root-left, val);} else if (val root-val) {root-right deleteNode(root-right, val);} else {// 情况 1: 没有子节点或只有一个子节点if (root-left nullptr) {TreeNode* temp root-right;delete root;return temp;} else if (root-right nullptr) {TreeNode* temp root-left;delete root;return temp;}// 情况 2: 有两个子节点TreeNode* temp findMin(root-right);root-val temp-val;root-right deleteNode(root-right, temp-val);}return root; } // 辅助函数插入节点 TreeNode* insertNode(TreeNode* root, int val) {if (root nullptr) {return new TreeNode(val);}if (val root-val) {root-left insertNode(root-left, val);} else {root-right insertNode(root-right, val);}return root; } int main() {TreeNode* root nullptr;root insertNode(root, 50);insertNode(root, 30);insertNode(root, 20);insertNode(root, 40);insertNode(root, 70);insertNode(root, 60);insertNode(root, 80);root deleteNode(root, 30);return 0; } 前序遍历 // 前序遍历递归 std::vectorint preorderTraversalRecursive(TreeNode* root) {std::vectorint result;if (root nullptr) return result;result.push_back(root-val);auto leftResult preorderTraversalRecursive(root-left);result.insert(result.end(), leftResult.begin(), leftResult.end());auto rightResult preorderTraversalRecursive(root-right);result.insert(result.end(), rightResult.begin(), rightResult.end());return result; } int main() {TreeNode* root new TreeNode(1);root-right new TreeNode(2);root-right-left new TreeNode(3);std::vectorint preorderRecursive preorderTraversalRecursive(root);return 0; } 中序遍历 // 中序遍历递归 std::vectorint inorderTraversalRecursive(TreeNode* root) {std::vectorint result;if (root nullptr) return result;auto leftResult inorderTraversalRecursive(root-left);result.insert(result.end(), leftResult.begin(), leftResult.end());result.push_back(root-val);auto rightResult inorderTraversalRecursive(root-right);result.insert(result.end(), rightResult.begin(), rightResult.end());return result; } int main() {TreeNode* root new TreeNode(1);root-right new TreeNode(2);root-right-left new TreeNode(3);std::vectorint inorderRecursive inorderTraversalRecursive(root);return 0; } 后序遍历 // 后序遍历递归 std::vectorint postorderTraversalRecursive(TreeNode* root) {std::vectorint result;if (root nullptr) return result;auto leftResult postorderTraversalRecursive(root-left);result.insert(result.end(), leftResult.begin(), leftResult.end());auto rightResult postorderTraversalRecursive(root-right);result.insert(result.end(), rightResult.begin(), rightResult.end());result.push_back(root-val);return result; } int main() {TreeNode* root new TreeNode(1);root-right new TreeNode(2);root-right-left new TreeNode(3);std::vectorint postorderRecursive postorderTraversalRecursive(root);return 0; }
http://www.ho-use.cn/article/10813659.html

相关文章:

  • 惠城网站制作织梦转易优cms
  • 南京 郑州网站建设公司 网络服务广州推广公司
  • 10黄页网站建设百度搜索广告
  • 建筑网站翻译编辑创意字体设计网站
  • 做电锯电音的网站WordPress发的文章怎么删
  • 网站建设 博采网络 学校阿里云 云虚拟主机 wordpress
  • 专业网站模仿京东网站建设案例论文
  • 企业网站轮播图有哪些网站可以做代理
  • 建站行业严重产能过剩网站本地被劫要怎么做
  • 男直接做的视频网站重庆建设工程交易中心网站
  • 西樵网站开发文学类网站怎么做
  • dede网站备份八戒logo设计网
  • 做图片网站 侵权山西省建设工程信息网
  • 电子商务网站html模板金昌市建设工程质量监督站网站
  • 网站详情页怎么做的网站广告位有哪些
  • 广东省网站建设公司排名汕头专业的免费建站
  • 做互联网网站赚钱吗五金塑胶 技术支持 东莞网站建设
  • 手机咋做网站国外跨境电商平台有哪些
  • 杭州网企业网站建设wordpress 侧栏加flash
  • 免费建网站平台教考试网站模版
  • 四川营销网站建设网站建设前景怎么样
  • 中企动力做网站怎么样广西互联网营销公司
  • 个体工商户可以申请网站建设吗wordpress如何生成rss
  • wap站是什么意思啊公司网站运营维护单位
  • 建站国外百元服务器wordpress标题字体修改
  • 三门峡住房城乡建设局网站物联网专业就业方向
  • 连云港网站关键词建站之星至尊版
  • 制作网页的网站有哪些网站如何被搜索到
  • 厦门网站设计公司推荐诚信通旺铺网站建设
  • 实验室网站制作西昌规划和建设局网站