二叉树的中序遍历-迭代
程序员文章站
2022-03-14 23:01:52
...
题目描述
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
/**
* 建立栈和结果集合
*/
Stack<TreeNode> stack = new Stack();
TreeNode node = root;
List<Integer> result = new ArrayList();
/**
* 所有结点都会进入栈一次,不把全体结点遍历一遍不退出
*/
while(node != null || !stack.empty()) {
/**
* 遍历到无左孩子,再输出自己,最后以右孩子为下一次循环节点
*/
while(node != null) {
stack.push(node);
node = node.left;
}
node = stack.pop();
result.add(node.val);
node = node.right;
}
return result;
}
}
上一篇: JS如何获取地址栏的参数(代码)