博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode中二叉树的前序、中序、后序遍历
阅读量:3950 次
发布时间:2019-05-24

本文共 1753 字,大约阅读时间需要 5 分钟。

题目

给定一个二叉树,返回它的前序、中序、后序遍历;

题解

  1. 递归法:
class Solution {
//递归解法: //前序遍历 List
arr = new ArrayList<>(); public List
preorderTraversal(TreeNode root) {
TreeNode head = root; if(head == null){
return arr; } arr.add(head.val); preorderTraversal(head.left); preorderTraversal(head.right); return arr; } }
class Solution {
//递归解法 //中序遍历 List
res = new ArrayList<>(); public List
inorderTraversal(TreeNode root) {
TreeNode head = root; if(head == null){
return res; } inorderTraversal(root.left); res.add(head.val); inorderTraversal(root.right); return res; }}
class Solution {
//递归解法 //后序遍历 List
res = new ArrayList<>(); public List
postorderTraversal(TreeNode root) {
TreeNode head = root; if(head == null){
return res; } postorderTraversal(head.left); postorderTraversal(head.right); res.add(head.val); return res; }}
  1. 迭代法:
class Solution {
//迭代解法:建立一个栈,来存放输出数据 //前序遍历 public List
preorderTraversal(TreeNode root) {
List
res = new ArrayList<>(); if(root == null){
return res; } Deque
stack = new LinkedList
(); TreeNode node = root; while(!stack.isEmpty() || node != null){
while(node!=null){
res.add(node.val); stack.push(node); node = node.left; } node =stack.pop(); node = node.right; } return res; }}

转载地址:http://awwzi.baihongyu.com/

你可能感兴趣的文章
两个同步表的字段复制.Oracle.
查看>>
windows MySQL 报“Got a packet bigger than 'max_allowed_packet' bytes”错误,解决过程.
查看>>
MFC ADO连MySQL,使用数据源.
查看>>
在Redhat9下静态编译glib库.
查看>>
在ubuntu12下静态编译freetype库.
查看>>
CImg库编译使用.
查看>>
SQL Server循环执行动态SQL语句.
查看>>
windows MySQL报"2006 - MySQL server has gone away"错误,解决过程.
查看>>
ubuntu10.4网卡名由eth0改为eth4,导致获得不了IP地址.解决方法.
查看>>
CheckPoint关键词做字段名使用.
查看>>
Qt QSplitte分割器使用(用户手动改变窗口大小)
查看>>
根据高度图计算体积等。
查看>>
Qt动态加载动态库
查看>>
使用VS2015创建纯C动态库。
查看>>
MFC和Qt分别使用Qt生成的Dll。
查看>>
Qt安装路径中的platforms文件夹
查看>>
Qt5 Crash When Open File With QFileDialog
查看>>
关于Visual Studio "当前不会命中断点.还没有为该文档加载任何符号"的解决方法
查看>>
source ~/.bashrc出现if: Expression Syntax.
查看>>
MYSQL架构与工作机理
查看>>