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

大型网站建设网站推广标志logo设计

大型网站建设网站推广,标志logo设计,义乌建设局网站,室内设计联盟邀请码怎么弄二叉树的非递归遍历 文章目录 二叉树的非递归遍历前序遍历-栈层序遍历-队列中序遍历-栈后序遍历-栈 前序遍历-栈 首先我们应该创建一个Stack 用来存放节点#xff0c;首先我们想要打印根节点的数据#xff0c;此时Stack里面的内容为空#xff0c;所以我们优先将头结点加入S…二叉树的非递归遍历 文章目录 二叉树的非递归遍历前序遍历-栈层序遍历-队列中序遍历-栈后序遍历-栈 前序遍历-栈 首先我们应该创建一个Stack 用来存放节点首先我们想要打印根节点的数据此时Stack里面的内容为空所以我们优先将头结点加入Stack。之后我们应该先打印左子树然后右子树所以先加入Stack的就是右子树然后左子树。 public ListInteger preorderTraversal(TreeNode root) {ListInteger res new ArrayList();if (root null) {return res;}StackTreeNode stack new Stack();//1.根节点入栈stack.push(root);//2.栈不为空while (!stack.isEmpty()) {//2.1出栈需暂时保存出栈元素TreeNode tmp stack.pop();res.add(tmp.val);//2.2左右子树不为空的情况下出栈元素的右子树入栈左子树入栈if (tmp.right ! null) {stack.push(tmp.right);}if (tmp.left ! null) {stack.push(tmp.left);}}return res; } 层序遍历-队列 首先我们应该创建一个Queue用来存放节点首先我们想要打印根节点的数据此时Queue里面的内容为空所以我们优先将头结点加入Queue。之后我们应该先打印左子树然后右子树所以先加入Queue的就是左子树然后右子树。 public ListListInteger levelOrder(TreeNode root) {ListListInteger res new ArrayList();if (root null) {return res;}QueueTreeNode queue new LinkedList();//1.根节点入队列queue.offer(root);//2.队列不为空while (!queue.isEmpty()) {//2.1获取当前队列的元素ListInteger level new ArrayList();int size queue.size();for (int i 0; i size; i) {//2.1.1出队列需暂时保存出队元素TreeNode tmp queue.poll();level.add(tmp.val);//2.1.2左右子树不为空的情况下出队元素的左子树入队右子树入队if (tmp.left ! null) {queue.offer(tmp.left);}if (tmp.right ! null) {queue.offer(tmp.right);}}//2.2当前队列元素加入到res中res.add(level);}return res; }中序遍历-栈 同理创建一个 Stack。 尽可能的将这个节点的左子树压入 Stack此时栈顶的元素是最左侧的元素其目的是找到一个最小单位的子树(也就是最左侧的一个节点)并且在寻找的过程中记录了来源才能返回上层同时在返回上层的时候已经处理完毕左子树了。 当处理完最小单位的子树时返回到上层处理了中间节点。如果把整个左中右的遍历都理解成子树的话就是处理完 左子树-中间(就是一个节点)-右子树 如果有右节点其也要进行中序遍历。 public ListInteger inorderTraversal(TreeNode root) {ListInteger res new ArrayList();if (root null) {return res;}StackTreeNode stack new Stack();TreeNode cur root;while (true) {//1.cur从根节点出发一直向左保存左子树直到curnullwhile (cur ! null) {stack.push(cur);cur cur.left;}//2.若栈为空退出循环if (stack.isEmpty()) {break;}//3.出栈TreeNode tmp stack.pop();res.add(tmp.val);//4.cur指向出栈元素的右子树//若为空则继续出栈若不为空再继续向左保存子树cur tmp.right;}return res; }后序遍历-栈 同理创建一个 Stack。 尽可能的将这个节点的左子树压入 Stack此时栈顶的元素是最左侧的元素。 该元素无右子树或者右子树已经访问过则可以处理该元素并用prev记录当前已处理的元素 否则访问右子树进行后序遍历 public ListInteger postorderTraversal(TreeNode root) {ListInteger res new ArrayList();if (root null) {return res;}StackTreeNode stack new Stack();TreeNode cur root;TreeNode prev null;while (true) {//1.cur从根节点出发一直向左保存左子树直到curnullwhile (cur ! null) {stack.push(cur);cur cur.left;}//2.若栈为空退出循环if (stack.isEmpty()) {break;}//3.得到栈顶元素先不访问满足条件才可以访问TreeNode tmp stack.peek();//4.若栈顶元素无右子树或者右子树已被访问则可以访问//若prevtmp.right则tmp一定是其右子树的根节点。因为此时右子树已访问完毕if (tmp.right null || tmp.right prev) {stack.pop();res.add(tmp.val);prev tmp;} else { //5.cur指向栈顶元素的右子树cur tmp.right;}}return res;}
http://www.w-s-a.com/news/248559/

相关文章:

  • 高安建站公司济宁哪里做网站最便宜
  • 南宁建站免费模板简单的html网页设计
  • 吉林省建设 安全 网站沐风seo
  • 自己做捕鱼网站能不能挣钱软件开发公司需要什么硬件设备
  • 大连设计网站公司3小说网站开发
  • 建设环保网站查询系统网站建设168
  • 保险网站程序源码wordpress过滤敏感
  • 简述营销型网站推广的方法网站建设报价方案模板
  • 四川林峰脉建设工程有限公司网站为什么建设营销型网站
  • 网站模板搭建已经建网站做外贸
  • 网站建设选哪个wordpress实现微信登录界面
  • 网页设计网站哪个公司好学网站开发要多少钱
  • 商务网站建设ppt做视频分享网站
  • WordPress网站根目录有哪些wordpress用户等级
  • 私人装修接单网站重庆制作企业网站
  • 易企秀网站怎么做轮播图什么是网站版面布局
  • 网站开发先写什么后写什么做网站公司专业
  • 中山网站建设文化外贸公司的网站建设模板
  • 美食网站开发开题报告wordpress第三方支付接口
  • 有哪些网站可以卖自己做的图片简洁大方的网站首页
  • 四川建设网电子招投标网站网站酷站
  • 凯里网站建设如何收费网站建设php怎么安装
  • 网站建设专业网站设计公司物格网一站式建站价格
  • seo网站培训优化怎么做如何给网站做下载附件
  • php网站建设文献综述怎么样提高网站排名
  • 专用车网站建设wordpress半透明
  • 石狮网站建设哪家好wordpress 3.9 漏洞
  • 为何建设单位网站找网络推广策畿
  • 用网站模板做网站动漫制作专业学校前十名
  • 网页 代码怎么做网站网站建设与维护课程设计