关闭

【Leetcode】Binary Tree Inorder Traversal

234人阅读 评论(0) 收藏 举报
分类:

题目链接:https://leetcode.com/problems/binary-tree-inorder-traversal/

题目:

Given a binary tree, return the inorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1
    \
     2
    /
   3

return [1,3,2].

Note: Recursive solution is trivial, could you do it iteratively?

思路:

用栈模拟中序遍历过程

算法:

	public List<Integer> inorderTraversal(TreeNode root) {
		List<Integer> list = new ArrayList<Integer>();
		Stack<TreeNode> stack = new Stack<TreeNode>();
		while (root != null || !stack.isEmpty()) {
			if (root != null) {
				stack.push(root);
				root = root.left;  
			} else { //左子树为空,则访问val,且开始遍历右子树
				root = stack.pop();
				list.add(root.val);
				root = root.right;
			}
		}
		return list;
	}




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:545616次
    • 积分:8453
    • 等级:
    • 排名:第2630名
    • 原创:305篇
    • 转载:6篇
    • 译文:0篇
    • 评论:35条
    博客专栏
    文章分类
    最新评论