博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode----94. Binary Tree Inorder Traversal
阅读量:4112 次
发布时间:2019-05-25

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

链接:

大意:

使用迭代的方法中序遍历二叉树。

思路:

使用一个栈(我使用的是顺序栈)stack存储已经遍历的树节点,并且当前遍历节点为栈顶元素的左孩子。若当前遍历节点为null,则将stack的栈顶元素值加入到遍历列表res中,弹出栈顶元素(top--),并使当前遍历节点为弹出节点的右孩子。

详情见代码。

代码:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    private final int SIZE = 100;    public List
inorderTraversal(TreeNode root) { List
res = new ArrayList<>(); if (root == null) return res; TreeNode[] stack = new TreeNode[SIZE]; int top = -1; // 指向栈顶元素 // 当root为null且stack为空时跳出循环 while (root != null || top != -1) { if (root != null) { stack[++top] = root; root = root.left; } else { // root == null res.add(stack[top].val); root = stack[top--].right; } } return res; }}

结果:

结论:

使用迭代的方式对二叉树进行中序遍历。在迭代方式里,使用数据结构栈来代替递归方式中的一个个递归。 

 

 

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

你可能感兴趣的文章
LeetCode第48题思悟——旋转图像(rotate-image)
查看>>
驱动力3.0,动力全开~
查看>>
记CSDN访问量10万+
查看>>
Linux下Oracle数据库账户被锁:the account is locked问题的解决
查看>>
记CSDN访问20万+
查看>>
Windows 环境下Webstorm 2020.3 版本在右下角找不到Git分支切换部件的一种解决方法
查看>>
Electron-Vue项目中遇到fs.rm is not a function问题的解决过程
查看>>
飞机换乘次数最少问题的两种解决方案
查看>>
有向无回路图的理解
查看>>
设计模式中英文汇总分类
查看>>
MFC实现五子棋游戏
查看>>
WPF实现蜘蛛纸牌游戏
查看>>
单例模式
查看>>
工厂方法模式
查看>>
模板方法模式
查看>>
数据结构之队列、栈
查看>>
数据结构之树
查看>>
数据结构之二叉树
查看>>
二叉树非递归遍历算法思悟
查看>>
红黑树算法思悟
查看>>