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

网站开发作业代做免费网站推广群发软件

网站开发作业代做,免费网站推广群发软件,建网站需要了解什么,中山外贸网站建设公司二叉树遍历非递归实现 目录 二叉树遍历非递归实现 树节点定义: 先序遍历: 中序遍历: 后序遍历: 测试代码: 先序遍历测试代码: 中序遍历测试代码: 后序遍历测试代码: 树节点…

二叉树遍历非递归实现

目录

二叉树遍历非递归实现

树节点定义:

先序遍历:

中序遍历:

后序遍历:

测试代码:

先序遍历测试代码:

中序遍历测试代码:

后序遍历测试代码:


树节点定义:

public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}
}

先序遍历:

    /*** 前序遍历二叉树* @param root* @return*/public List<Integer> preorderTraversal(TreeNode root) {Stack<TreeNode> stack = new Stack<>();List<Integer> list = new LinkedList<>();while (root != null || !stack.isEmpty()) {if (root != null) {// 先访问根节点list.add(root.val);stack.push(root);// 然后访问左子树root = root.left;} else {// 如果没有左子树,访问右子树root = stack.pop();root = root.right;}}return list;}

中序遍历:

    /*** 中序遍历二叉树* @param root* @return*/public List<Integer> inorderTraversal(TreeNode root) {Stack<TreeNode> stack = new Stack<>();List<Integer> list = new LinkedList<>();while (root != null || !stack.isEmpty()) {if (root!=null){stack.push(root);//先访问左子树root = root.left;}else {root = stack.pop();//访问根节点list.add(root.val);//访问右子树root = root.right;}}return list;}

后序遍历:

    /*** 后序遍历二叉树* @param root* @return*/public List<Integer> postorderTraversal(TreeNode root) {Stack<TreeNode> stack = new Stack<>();List<Integer> list = new LinkedList<>();// 记录上一个访问的节点TreeNode lastVisited = null;while (root != null || !stack.isEmpty()) {if (root != null) {stack.push(root);// 先访问左子树root = root.left;} else {TreeNode peekNode = stack.peek();// 如果右子树不存在或已经被访问过,则访问当前节点if (peekNode.right == null || peekNode.right == lastVisited) {list.add(peekNode.val);// 更新上一个访问的节点lastVisited = stack.pop();} else {// 否则访问右子树root = peekNode.right;}}}return list;}

层序遍历:

    /*** 层序遍历二叉树* @param root* @return*/public List<Integer> levelorderTraversal(TreeNode root) {List<Integer> list = new LinkedList<>();// 如果根节点为空,直接返回空列表if (root == null) {return list;}LinkedList<TreeNode> queue = new LinkedList<>();queue.add(root);while (!queue.isEmpty()) {TreeNode node = queue.poll();list.add(node.val);if (node.left != null) {queue.add(node.left);}if (node.right != null) {queue.add(node.right);}}return list;}

测试代码:

先序遍历测试代码:

    /*** 测试前序遍历*/@Testpublic void testPreorderTraversal() {TreeNode root = new TreeNode(1);root.left = new TreeNode(2);root.right = new TreeNode(3);root.left.left = new TreeNode(4);root.left.right = new TreeNode(5);BinaryTree binaryTree = new BinaryTree();List<Integer> result = binaryTree.preorderTraversal(root);// 输出: [1, 2, 4, 5, 3]System.out.println(result);}

中序遍历测试代码:

    /*** 测试中序遍历*/@Testpublic void testInorderTraversal() {TreeNode root = new TreeNode(1);root.left = new TreeNode(2);root.right = new TreeNode(3);root.left.left = new TreeNode(4);root.left.right = new TreeNode(5);BinaryTree binaryTree = new BinaryTree();List<Integer> result = binaryTree.inorderTraversal(root);// 输出: [4, 2, 5, 1, 3]System.out.println(result);}

后序遍历测试代码:

    /*** 测试后序遍历*/@Testpublic void testPostorderTraversal() {TreeNode root = new TreeNode(1);root.left = new TreeNode(2);root.right = new TreeNode(3);root.left.left = new TreeNode(4);root.left.right = new TreeNode(5);BinaryTree binaryTree = new BinaryTree();List<Integer> result = binaryTree.postorderTraversal(root);// 输出: [4, 5, 2, 3, 1]System.out.println(result);}

层序遍历测试代码:

    /*** 测试层序遍历*/@Testpublic void testLevelorderTraversal() {TreeNode root = new TreeNode(1);root.left = new TreeNode(2);root.right = new TreeNode(3);root.left.left = new TreeNode(4);root.left.right = new TreeNode(5);BinaryTree binaryTree = new BinaryTree();List<Integer> result = binaryTree.levelorderTraversal(root);// 输出: [1, 2, 3, 4, 5]System.out.println(result);}

注:深度优先搜索策略与广度优先搜索策略暂不在本文探讨范围。

http://www.dtcms.com/wzjs/370254.html

相关文章:

  • 网络营销的重点网站标题seo外包优化
  • 自己用钢管做里闪弹枪视频和照网站seo发包技术教程
  • 做网站发房源综合语录大学生网页设计作业
  • 大型信息类PC网站适合vue做吗杭州排名优化公司电话
  • 外贸流程全步骤流程图长沙seo网络营销推广
  • app开发怎么赚钱seo基本步骤
  • 自己做网站的软件seo外链推广平台
  • 做视频网站用什么服务器如何开发网站平台
  • 在线免费解答网站怎么建网站seo推广计划
  • 什么是短视频营销seo最新优化技术
  • 网站怎么做流量营销型网站开发公司
  • 设计手机网站软件百度客服人工电话24
  • 廊坊市网站建设软文标题大全
  • 企业网站的宣传功能体现在哪里企业seo网络推广
  • 宁波江北区城市建设档案馆网站seo公司杭州
  • 代码生成器原理seo优化官网
  • 扬州抖音推广公司乐陵seo外包
  • 品牌网站建设策seo搜索优化邵阳
  • 哪个网站做h5好用优化排名seo
  • 西安定制网站建设宣传推广的十种方式
  • 网站后台管理系统怎么用采集站seo提高收录
  • 建站平台塔山双喜简述网络营销的特点及功能
  • 重庆有哪些建设公司什么是seo优化
  • 常德哪里有做网站什么是百度指数
  • 做网站开封seo优化上海牛巨微
  • 机关单位网站安全建设怎么联系地推公司
  • protenus代做网站佛山网络排名优化
  • 北京有哪些网站建设公司好seo作弊
  • 在哪请人做网站zac seo博客
  • 雄安网站建设机构优化 保证排名