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

网站基础建设巴巴商友圈wordpress搜索代码

网站基础建设巴巴商友圈,wordpress搜索代码,微网站建设公司,黄冈网站制作题目1#xff1a;102 二叉树的层序遍历 题目链接#xff1a;102 二叉树的层序遍历 题意 根据二叉树的根节点root#xff0c;返回其节点值的层序遍历 借助队列实现#xff0c;因为队列是先进先出的逻辑#xff0c;符合层序遍历一层一层遍历的思想 代码 /*** Definitio…题目1102 二叉树的层序遍历 题目链接102 二叉树的层序遍历 题意 根据二叉树的根节点root返回其节点值的层序遍历 借助队列实现因为队列是先进先出的逻辑符合层序遍历一层一层遍历的思想 代码 /*** 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:vectorvectorint levelOrder(TreeNode* root) {vectorvectorint result;queueTreeNode* que;if(root!NULL){que.push(root);while(!que.empty()){vectorint vec;//存放每一层的结果int size que.size();while(size--){TreeNode* node que.front();que.pop();if(node){vec.push_back(node-val);}if(node-left){que.push(node-left);}if(node-right){que.push(node-right);}}result.push_back(vec);}}return result;} }; 题目2226  翻转二叉树 题目链接226 翻转二叉树 题意 根据二叉树的根节点root翻转二叉树将节点是左右孩子进行翻转 注意是节点指针做交换而不是单个数值交换 首先确定遍历顺序前序遍历 后序遍历比较直接中序遍历得绕一下 递归法 递归三部曲 1递归函数的参数和返回值 2确定终止条件 3确定单层递归逻辑 前序遍历 伪代码 代码 /*** 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:TreeNode* invertTree(TreeNode* root) {//终止条件if(rootNULL){return root;}//单层递归逻辑,前序 中左右swap(root-left,root-right);invertTree(root-left);invertTree(root-right);return root;} }; 后序遍历 伪代码 代码 /*** 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:TreeNode* invertTree(TreeNode* root) {//终止条件if(rootNULL){return root;}//单层递归逻辑,后序 左右中invertTree(root-left);invertTree(root-right);swap(root-left,root-right);return root;} }; 中序遍历 伪代码 代码 /*** 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:TreeNode* invertTree(TreeNode* root) {//终止条件if(rootNULL){return root;}//单层递归逻辑,中序 左中右invertTree(root-left);swap(root-left,root-right);invertTree(root-left);return root;} }; 层次遍历 将节点的左右孩子翻转一下就可以了 代码 /*** 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:TreeNode* invertTree(TreeNode* root) {queueTreeNode* que;if(root!NULL){que.push(root);}while(!que.empty()){int size que.size();while(size--){TreeNode* node que.front();que.pop();swap(node-left,node-right);if(node-left){que.push(node-left);}if(node-right){que.push(node-right);}}}return root;} }; 迭代法 前序遍历 /*** 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:TreeNode* invertTree(TreeNode* root) {stackTreeNode* st;if(root!NULL){st.push(root);}while(!st.empty()){TreeNode* node st.top();st.pop();swap(node-left,node-right);//中if(node-right){st.push(node-right);//左}if(node-left){st.push(node-left);//右}}return root;} }; 题目3101 对称二叉树 题目链接101 对称二叉树 题意 根据二叉树的根节点root检查该二叉树是否轴对称 递归法 递归三部曲   1递归函数的参数和返回值  同时遍历两棵树根节点的左子树和根节点的右子树 2确定终止条件 3确定单层递归的逻辑 代码 /*** 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:bool compare(TreeNode* left,TreeNode* right){//终止条件if(left!NULL rightNULL) return false;else if(leftNULL right!NULL) return false;else if(leftNULL rightNULL) return true;else if(left-val!right-val) return false;//一定要先判读是否为空再取值所以先判断上面是否为空的逻辑//单层递归逻辑 后序遍历 左右中//外侧bool outside compare(left-left,right-right);//内侧bool inside compare(left-right,right-left);bool result outside inside;return result;}bool isSymmetric(TreeNode* root) {return compare(root-left,root-right);} }; 迭代法 队列 每次从队列中弹出两个元素(左子树的外侧节点与右子树的外侧节点左子树的内侧节点与右子树的内侧节点)比较。 代码 /*** 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:bool isSymmetric(TreeNode* root) {queueTreeNode* que;if(root!NULL){que.push(root-left);que.push(root-right);}while(!que.empty()){TreeNode* leftnode que.front();que.pop();TreeNode* rightnode que.front();que.pop();if(leftnodeNULL rightnodeNULL) continue;//遍历到叶子节点的下一层else if(leftnode!NULL rightnodeNULL) return false;else if(leftnodeNULL rightnode!NULL) return false;else if(leftnode-val!rightnode-val) return false;else{que.push(leftnode-left);//外侧节点que.push(rightnode-right);//外侧节点que.push(leftnode-right);//内侧节点que.push(rightnode-left);//内侧节点}}return true;} }; 反例 为啥是continue 不是return true? 栈 和队列的流程一模一样只不过是换了一个容器而已 代码 /*** 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:bool isSymmetric(TreeNode* root) {stackTreeNode* st;if(root!NULL){st.push(root-left);st.push(root-right);}while(!st.empty()){TreeNode* rightnode st.top();st.pop();TreeNode* leftnode st.top();st.pop();if(rightnodeNULL leftnodeNULL) continue;else if(rightnodeNULL leftnode!NULL) return false;else if(rightnode!NULL leftnodeNULL) return false;else if(rightnode-val!leftnode-val) return false;else{st.push(leftnode-left);//外侧节点st.push(rightnode-right);//外侧节点st.push(leftnode-right);//内侧节点st.push(rightnode-left);//内侧节点}}return true;} }; 反例 为啥是continue 不是return true?
http://www.zqtcl.cn/news/25783/

相关文章:

  • 江苏省建设厅网站建造师强制注销263企业邮箱是哪个公司
  • 邢台网站制作哪里好珠海网站建设运营公司
  • 网站快照不更新中国政务网站建设绩效评估
  • 维修网站源码wordpress设主题
  • 宁波哪里有做网站的企业网盘推荐
  • 武城网站建设电话wordpress选择哪种固定连接
  • 营销展示型网站建设价格企业网站建设的主要步骤
  • 网站内部优化有哪些内容国内比较好的wordpress主题
  • eclipse开发网站开发建设返利优惠券网站
  • 做网站用服务器电商网站 开发费用
  • 深圳做网站价比高的公司性中国建筑集团有限公司企业文化
  • 公司做网站还是做app阿里云 装wordpress
  • 国内最有趣的网站百元便宜建站
  • 怎么用小旋风网站建设教程交换友情链接的网站标准是什么
  • 做竞价推广的网站要求重庆公司社保最低档每月多少钱
  • 如何做测评视频网站长寿做网站
  • 网站规划书包括哪些方面社区网站建设资金申请
  • 南通精诚建设集团有限公司网站关键词优化哪个好
  • 做源码网站违法吗wordpress 删除小工具
  • 宁波企业网站开发成都网站seo分析
  • 厦门跨境建站平台南京4a广告公司
  • 域名到期网站马尼拉做网站
  • 产品导航网站源码黄山旅游攻略自助游
  • 多种语言的网站网站建设自查工作
  • 做网站就找喇叭人上海高端it网站建设
  • 大良营销网站建设教程电工应用技术网站资源建设
  • 最贵网站建设多少钱一个网站seo做哪些工作内容
  • 怎么用FTP做网站网站开发 书
  • 网站备案登记西安seo网站排名优化公司
  • 网站架构设计师月薪多少现在流行的网站制作工具