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

北京市建设工程安全质量监督总站网站wordpress 调整布局

北京市建设工程安全质量监督总站网站,wordpress 调整布局,python微信小程序开发教程,济南百度seo二叉树的遍历是二叉树操作中的一个基本且重要的概念#xff0c;它指的是按照一定的规则访问二叉树中的每个节点#xff0c;并且每个节点仅被访问一次。常见的二叉树遍历方式有四种#xff1a;前序遍历#xff08;Pre-order Traversal#xff09;、中序遍历#xff08;In-…二叉树的遍历是二叉树操作中的一个基本且重要的概念它指的是按照一定的规则访问二叉树中的每个节点并且每个节点仅被访问一次。常见的二叉树遍历方式有四种前序遍历Pre-order Traversal、中序遍历In-order Traversal、后序遍历Post-order Traversal和层序遍历Level-order Traversal。 1. 前序遍历Pre-order Traversal 前序遍历的顺序是根节点 - 左子树 - 右子树。对于每个节点都遵循这个顺序进行遍历。 递归实现 void preorderTraversal(TreeNode root) { if (root null) return; System.out.print(root.val ); // 访问根节点 preorderTraversal(root.left); // 遍历左子树 preorderTraversal(root.right); // 遍历右子树 } 非递归迭代实现使用栈 void preorderTraversalIterative(TreeNode root) { StackTreeNode stack new Stack(); if (root ! null) stack.push(root); while (!stack.isEmpty()) { TreeNode node stack.pop(); System.out.print(node.val ); // 访问节点 if (node.right ! null) stack.push(node.right); // 先右后左保证左子树先遍历 if (node.left ! null) stack.push(node.left); } } 2. 中序遍历In-order Traversal 中序遍历的顺序是左子树 - 根节点 - 右子树。这常用于二叉搜索树BST中因为这样可以得到一个有序的节点序列。 递归实现 void inorderTraversal(TreeNode root) { if (root null) return; inorderTraversal(root.left); // 遍历左子树 System.out.print(root.val ); // 访问根节点 inorderTraversal(root.right); // 遍历右子树 } 非递归迭代实现使用栈 void inorderTraversalIterative(TreeNode root) { StackTreeNode stack new Stack(); TreeNode curr root; while (curr ! null || !stack.isEmpty()) { while (curr ! null) { stack.push(curr); curr curr.left; // 遍历到最左节点 } curr stack.pop(); // 弹出栈顶元素 System.out.print(curr.val ); // 访问节点 curr curr.right; // 转向右子树 } } 3. 后序遍历Post-order Traversal 后序遍历的顺序是左子树 - 右子树 - 根节点。 递归实现 void postorderTraversal(TreeNode root) { if (root null) return; postorderTraversal(root.left); // 遍历左子树 postorderTraversal(root.right); // 遍历右子树 System.out.print(root.val ); // 访问根节点 } 非递归迭代实现使用栈 void postorderTraversalIterative(TreeNode root) { StackTreeNode stack new Stack(); TreeNode prev null; // 用于记录上一次访问的节点 while (root ! null || !stack.isEmpty()) { while (root ! null) { stack.push(root); root root.left; // 遍历到最左节点 } root stack.peek(); // 弹出栈顶元素但不移除 // 如果右子树为空或者右子树已经访问过则访问当前节点 if (root.right null || root.right prev) { stack.pop(); System.out.print(root.val ); // 访问节点 prev root; root null; // 回到上层循环检查是否有其他节点需要访问 } else { root root.right; // 否则转向右子树 } } } 4. 层序遍历 非递归迭代实现使用队列 import java.util.LinkedList; import java.util.Queue; class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val x; } } public class BinaryTreeLevelOrderTraversal { public void levelOrderTraversal(TreeNode root) { if (root null) return; QueueTreeNode queue new LinkedList(); queue.offer(root); // 将根节点加入队列 while (!queue.isEmpty()) { TreeNode currentNode queue.poll(); // 从队列中取出一个节点 System.out.print(currentNode.val ); // 访问该节点 // 如果左子节点不为空则将其加入队列 if (currentNode.left ! null) { queue.offer(currentNode.left); } // 如果右子节点不为空则将其加入队列 if (currentNode.right ! null) { queue.offer(currentNode.right); } } } } 非递归迭代实现 实际上层序遍历不常使用递归实现因为递归本质上是栈的操作而层序遍历需要的是队列。但我们可以借助一些额外的数据结构如数组或链表来模拟层序遍历的效果但这通常不是推荐的做法因为它违背了层序遍历的本意。
http://www.hkea.cn/news/14567451/

相关文章:

  • 网站设计建设公司需要什么资质青岛网页制作案例
  • 树形菜单网站wordpress视频网站主题
  • 镇江网站建设机构怎样找公司做单的网站
  • 淘宝网站的推广与优化怎么给自己的网站做优化
  • 怎么做英文版网站网上电商平台
  • 丽江网站建设 莱芜广东深圳网站建设微信商城开发
  • 南宁建设网站哪里好企业怎么做网站建设
  • 微博白菜网站怎么做网站建设微信运营推广
  • 珠海医疗网站建设公司排名枣庄市建设局网站
  • 陕西 网站建设三河市城乡建设局网站
  • 网站排名费用用手机怎么制作软件
  • 门户网站建设推荐wordpress回收站+恢复
  • h5商城网站是什么久久建筑网施工方案好用吗
  • 新昌县住房和城乡建设局网站火车头采集wordpress博客
  • wordpress网站静态页面网站备案域名怎么买
  • 河南网站建设外贸关键词的优化方案
  • 网站收录多少才有排名何苦做游戏网站
  • 小程序开发平台需要网站吗中兴的网站谁做的
  • 哪儿网站建设费用低网站备案信息下载
  • 上海网站建设_永灿品牌建站网站建设立项
  • 湖北省建设厅造价官方网站辽宁建设厅的证到底在哪个网站查
  • 安徽安能建设集团网站html前端网站开发PPT
  • 快捷网站建设wordpress图片分组
  • 长安网站建设好吗古风网站建设
  • 帝国cms怎样做网站迁移网站建设优化公司
  • 做外贸网站推广的步骤上海网站建设q479185700強
  • 网站开发需求文档模板网页空间是什么意思
  • 网站的展现形式公司制作官网
  • 网址注册在哪里注册百度网站优化 件
  • 广州专业网站制作apt安装wordpress