前序遍历(递归、非递归)、层序遍历(递归、非递归)
递归:
1 package 剑指offer.前序遍历; 2 3 import java.util.ArrayList; 4 5 /** 6 * Created by nick on 2018/10/6. 7 */ 8 public class Solution { 9 ArrayList<Integer> res=new ArrayList<Integer>(); 10 public void preNode(TreeNode root){ 11 if(root==null) 12 return; 13 res.add(root.val); 14 preNode(root.left); 15 preNode(root.right); 16 } 17 18 } 19 class TreeNode { 20 int val = 0; 21 TreeNode left = null; 22 TreeNode right = null; 23 24 public TreeNode(int val) { 25 this.val = val; 26 27 } 28 }
非递归:
1 package 剑指offer.前序遍历; 2 3 import java.util.ArrayList; 4 import java.util.Stack; 5 6 /** 7 * Created by nick on 2018/10/6. 8 */ 9 public class Solution1 { 10 ArrayList<Integer> res=new ArrayList<Integer>(); 11 public ArrayList<Integer> preNode(TreeNode root){ 12 Stack<TreeNode> temp=new Stack<TreeNode>(); 13 if(root==null) 14 return res; 15 temp.push(root); 16 while (!temp.isEmpty()){ 17 TreeNode t=temp.pop(); 18 res.add(t.val); 19 if(t.right!=null) 20 temp.push(root.right); 21 if(t.left!=null) 22 temp.push(root.left); 23 24 } 25 return res; 26 } 27 28 public static void main(String[] args) { 29 TreeNode root=new TreeNode(1); 30 root.left=new TreeNode(2); 31 root.right=new TreeNode(3); 32 33 System.out.println(new Solution1().preNode(root)); 34 } 35 }
层序遍历:
/** 层序遍历* 递归*/public void levelOrder(BinaryNode<AnyType> Node) {if (Node == null) {return;}int depth = depth(Node);for (int i = 1; i <= depth; i++) {levelOrder(Node, i);}}private void levelOrder(BinaryNode<AnyType> Node, int level) {if (Node == null || level < 1) {return;}if (level == 1) {System.out.print(Node.element + " ");return;}// 左子树levelOrder(Node.left, level - 1);//直到第level层,再进行打印// 右子树levelOrder(Node.right, level - 1);}public int depth(BinaryNode<AnyType> Node) {if (Node == null) {return 0;}int l = depth(Node.left);int r = depth(Node.right);if (l > r) {return l + 1;} else {return r + 1;}}
非递归算法:
//使用队列public static void levelTraversal2(TreeNode root){ArrayDeque<TreeNode> queue = new ArrayDeque<>();queue.add(root);while(!queue.isEmpty()){TreeNode temp = queue.poll();System.out.print(temp.val);if(temp.left != null){queue.offer(temp.left);}if(temp.right != null){queue.offer(temp.right);}}} }
转载于:https://www.cnblogs.com/nickup/p/9746993.html
前序遍历(递归、非递归)、层序遍历(递归、非递归)相关推荐
- 二叉树的前序遍历,二叉树的中序遍历,二叉树的后序遍历,二叉树的层序遍历
二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com) 给你二叉树的根节点 root ,返回它节点值的 前序 遍历. 示例 1: 输入:root ...
- BFS(二)二叉树层序遍历(I、II)、二叉树锯齿形层序遍历、N叉树层序遍历
目录 102. 二叉树的层序遍历 107. 二叉树的层序遍历 II 103. 二叉树的锯齿形层序遍历 429. N 叉树的层序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节 ...
- 二叉树的遍历:先序 中序 后序遍历的递归与非递归实现及层序遍历
二叉树的定义:一种基本的数据结构,是一种每个节点的儿子数目都不多于2的树 树节点的定义如下: // 树(节点)定义 struct TreeNode {int data; // 值TreeNode* l ...
- 遍历children_二叉树:层序遍历登场!
登场之后,我要打十个! 看完这篇文章虽然不能打十个,但是可以迅速打五个!而且够快! 102.二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值.(即逐层地,从左到右访问所有节点). ...
- 二叉树最简单的遍历方式——二叉树的层序遍历
遍历分为深度优先和广度优先,对于二叉树的深度优先遍历我们已经讨论过了常规的递归遍历,迭代遍历和优化了空间复杂度的Morris遍历,这篇博客我们来讨论二叉树的广度优先遍历,也就是我们常说的层序遍历. 以 ...
- 层次顺序遍历二叉树 (二叉树层序遍历)
[问题描述] 编写按层次顺序遍历二叉树的算法 实验要求:以二叉链表作为存储结构 [输入形式] 以扩展二叉树前序遍历序列作为输入,创建二叉树. [输出形式] 输出层次遍历节点的编号,每层按从左到右顺序输 ...
- 二叉树的层序遍历(二)---之字形层序遍历
题目描述 描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围: 0≤n≤1500,树上每个节点的val满足 |val| <= 1500 ...
- 32、用队列实现层序遍历-102.二叉树的层序遍历
题目描述: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 . (即逐层地,从左到右访问所有节点). 思路:之前在剑指Offer中做过 使用队列先入先出的性质,实现层序遍历! DFS(深度优 ...
- 二叉树层次遍历python_根据二叉树层序遍历顺序(数组),将其转换为二叉树(Python)...
1.创建二叉树结点和值 class Node: def __init__(self, value): self.value = value self.left = None self.right = ...
最新文章
- 【原创】关于代码质量的打油诗
- 学校通知,本学期不用返校了
- GridView中如何实现checkbox 默认选中
- sigprocmask和sigsuspend转
- 升级openssh带来的问题
- Lesson 8.5 SOFTMAX回归
- python3:module
- 【vim】Vim: Error detected while processing function SNR37_MRU_LoadList错误
- 人工智能已经迫在眉睫_创意计算机已经迫在眉睫
- 2020年计算机一级B押题,2021年全国计算机一级选择题真题押题.doc
- CnBlogs博文demo演示技巧比较:jsfiddle完胜
- 中电信总工:我国将在2011底出现IP短缺
- 超级好用论文写作工具NoteExpress下载和安装
- java标准化考试系统源码_java标准化考试系统
- 如何卸载 3DMAX ?怎么把3DMAX彻底卸载删除干净重新安装的方法
- TcpClient类异步接收数据
- 1、4G杂项:Air72XUX平台secure boot使用说明
- 亚马逊AWS云服务器 ubuntu系统登陆教程
- 在GridControl表格控件中实现多层级主从表数据的展示
- android 5.0合并分区,中兴天极2 S291合并分区刷Android 5.1刷机教程