LeetCode OJ平台上Binary Tree Inorder Traversal题目使用java堆栈方式实现

来源:互联网 发布:学编程用什么笔记本 编辑:程序博客网 时间:2024/06/05 18:13


原始题目,就是要求中序遍历二叉树,不能使用递归。

实现代码如下,先把root以及所有的左节点入栈。

当某节点左孩子为空,说明这个节点是最左节点,将它出栈,同时将它右孩子以及右孩子的所有左节点入栈。

源代码如下:

import java.util.*;public class Solution {public static List<Integer> inorderTraversal(TreeNode root){ArrayDeque<TreeNode> stack = new ArrayDeque<TreeNode>();List<Integer> a = new LinkedList<Integer>();if(root == null){return a;}else{stack.add(root);while(stack.peekLast().left != null){stack.add(stack.peekLast().left);}while(!stack.isEmpty()){TreeNode tmp = stack.removeLast();a.add(tmp.val);//System.out.println(tmp.val);if(tmp.right != null){stack.add(tmp.right);tmp = tmp.right;while(tmp.left != null){stack.add(tmp.left);tmp = tmp.left;}}}return a;}}public static void main(String args[]){List<Integer> c = new LinkedList<Integer>();TreeNode p = new TreeNode(1);TreeNode p2 = new TreeNode(2);TreeNode p3 = new TreeNode(3);TreeNode p4 = new TreeNode(4);TreeNode p5 = new TreeNode(5);TreeNode p6 = new TreeNode(6);TreeNode p7 = new TreeNode(7);p.left = p2;p.right = p5;p2.left = p3;p2.right = p4;p3.left = null;p3.right = null;p4.left = null;p4.right = null;p5.left = null;p5.right = null;c = inorderTraversal(p);for(int i = 0; i < c.size(); i ++ ){System.out.println(c.get(i));}}}

0 0
原创粉丝点击