关闭

【Leetcode】Binary Tree Preorder Traversal

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

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

题目:

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

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

   1
    \
     2
    /
   3

return [1,2,3].

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

思路:

前序遍历用栈保存,注意要先压入右结点,在压入左结点

算法:

	public List<Integer> preorderTraversal(TreeNode root) {
		List<Integer> list = new ArrayList<Integer>();
		Stack<TreeNode> stack = new Stack<TreeNode>();
		if (root == null)
			return list;
		stack.push(root);
		while (!stack.isEmpty()) {
			TreeNode tmp = stack.pop();
			list.add(tmp.val);
			if (tmp.right != null) //先压right,先出left,不断的先访问left
				stack.push(tmp.right);
			if (tmp.left != null)
				stack.push(tmp.left);
		}
		return list;
	}



0
0

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