递归:

 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

前序遍历(递归、非递归)、层序遍历(递归、非递归)相关推荐

  1. 二叉树的前序遍历,二叉树的中序遍历,二叉树的后序遍历,二叉树的层序遍历

    二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com) 给你二叉树的根节点 root ,返回它节点值的 前序 遍历. 示例 1: 输入:root ...

  2. BFS(二)二叉树层序遍历(I、II)、二叉树锯齿形层序遍历、N叉树层序遍历

    目录 102. 二叉树的层序遍历 107. 二叉树的层序遍历 II 103. 二叉树的锯齿形层序遍历 429. N 叉树的层序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节 ...

  3. 二叉树的遍历:先序 中序 后序遍历的递归与非递归实现及层序遍历

    二叉树的定义:一种基本的数据结构,是一种每个节点的儿子数目都不多于2的树 树节点的定义如下: // 树(节点)定义 struct TreeNode {int data; // 值TreeNode* l ...

  4. 遍历children_二叉树:层序遍历登场!

    登场之后,我要打十个! 看完这篇文章虽然不能打十个,但是可以迅速打五个!而且够快! 102.二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值.(即逐层地,从左到右访问所有节点). ...

  5. 二叉树最简单的遍历方式——二叉树的层序遍历

    遍历分为深度优先和广度优先,对于二叉树的深度优先遍历我们已经讨论过了常规的递归遍历,迭代遍历和优化了空间复杂度的Morris遍历,这篇博客我们来讨论二叉树的广度优先遍历,也就是我们常说的层序遍历. 以 ...

  6. 层次顺序遍历二叉树 (二叉树层序遍历)

    [问题描述] 编写按层次顺序遍历二叉树的算法 实验要求:以二叉链表作为存储结构 [输入形式] 以扩展二叉树前序遍历序列作为输入,创建二叉树. [输出形式] 输出层次遍历节点的编号,每层按从左到右顺序输 ...

  7. 二叉树的层序遍历(二)---之字形层序遍历

    题目描述 描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围: 0≤n≤1500,树上每个节点的val满足 |val| <= 1500 ...

  8. 32、用队列实现层序遍历-102.二叉树的层序遍历

    题目描述: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 . (即逐层地,从左到右访问所有节点). 思路:之前在剑指Offer中做过 使用队列先入先出的性质,实现层序遍历! DFS(深度优 ...

  9. 二叉树层次遍历python_根据二叉树层序遍历顺序(数组),将其转换为二叉树(Python)...

    1.创建二叉树结点和值 class Node: def __init__(self, value): self.value = value self.left = None self.right = ...

最新文章

  1. 【原创】关于代码质量的打油诗
  2. 学校通知,本学期不用返校了
  3. GridView中如何实现checkbox 默认选中
  4. sigprocmask和sigsuspend转
  5. 升级openssh带来的问题
  6. Lesson 8.5 SOFTMAX回归
  7. python3:module
  8. 【vim】Vim: Error detected while processing function SNR37_MRU_LoadList错误
  9. 人工智能已经迫在眉睫_创意计算机已经迫在眉睫
  10. 2020年计算机一级B押题,2021年全国计算机一级选择题真题押题.doc
  11. CnBlogs博文demo演示技巧比较:jsfiddle完胜
  12. 中电信总工:我国将在2011底出现IP短缺
  13. 超级好用论文写作工具NoteExpress下载和安装
  14. java标准化考试系统源码_java标准化考试系统
  15. 如何卸载 3DMAX ?怎么把3DMAX彻底卸载删除干净重新安装的方法
  16. TcpClient类异步接收数据
  17. 1、4G杂项:Air72XUX平台secure boot使用说明
  18. 亚马逊AWS云服务器 ubuntu系统登陆教程
  19. 在GridControl表格控件中实现多层级主从表数据的展示
  20. android 5.0合并分区,中兴天极2 S291合并分区刷Android 5.1刷机教程

热门文章

  1. java消费者和生产者模型_Java实现简易生产者消费者模型过程解析
  2. 【完结】12篇GAN的优化文章大盘点,浓浓的数学味儿
  3. 全球与中国重型离合器市场运营状况分析与“十四五”发展规划建议2021年版
  4. 滨州行谋定乡音叙乡情-农业大健康·万祥军:考察特色产业
  5. 0x0806 ARP协议分析
  6. (WPF)WPF要点之事件-深入浅出WPF笔记
  7. unity 中让Text的文字动态刷新形式
  8. HTTP请求报文和HTTP响应报文(转载)
  9. Java多线程之线程并发库阻塞队列的应用
  10. 深入理解Openstack自动化部署