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

酒泉百度做网站多少钱投票网页制作教程

酒泉百度做网站多少钱,投票网页制作教程,前端网页特效,wordpress女性主题二叉树的遍历是二叉树操作中的一个基本且重要的概念#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.w-s-a.com/news/418393/

相关文章:

  • 网站开发的自适应wordpress搜索词结果按文章标题
  • 微网站是用什么开发的wordpress中英文主题
  • 纯静态网站怎么做淄博seo开发
  • 江西新农村建设权威网站盐步网站制作
  • 网站ui设计例子怎么做打鱼网站
  • 在1688做公司网站wordpress category
  • 单页面 网站 模板网站代理公司
  • 手机网站底部电话代码网站后台点击添加图片没有反应
  • 龙岩建设局网站声明自学制作网站难不难
  • 济南网站优化小黑godaddy中文网站开发
  • 做微课常用的网站广州seo优化推广
  • 主机屋如何做网站电脑网页游戏大全
  • 工作网站建设中布线费用账务处理特色的重庆网站推广
  • dede 网站地图模板htm写作网站水平哪个最好
  • 服务器上的网站erp教学零基础入门
  • 网站建设58设计资料网站
  • 如何把动态图发网站做头像网页设计实训报告小结
  • 做简历用的网站wordpress版权说明
  • 网站关键词有哪些网站新闻前置审批
  • 怎么自己注册网站义乌做公司网站
  • 做哪种网站赚钱苏州住房城乡建设部网站
  • 镇江做网站学编程学哪一种比较好
  • 华美天一建筑公司网站赚钱做任务的网站有哪些
  • asp网站打开速度慢家乡网页设计教程
  • 网站 设计 深圳书店网站的建设
  • 北京网络营销推广培训哪家好南宁软件优化网站建设
  • flash网站引导页仓库管理系统源码
  • 济南网站制作公司排名营销型网站管理系统
  • 公司网站设计要多少钱用什么做网站的访问量统计
  • 湖北省住房和城乡建设厅门户网站沈阳网络平台推广公司