本文主要是介绍leetcode_144_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?
思路:
具体思路和中序遍历是一致的,只是访问结点的值的时机不同罢了,具体思路参见: http://blog.csdn.net/mnmlist/article/details/44312315代码:
/*** Definition for binary tree* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
public class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer>list=new ArrayList<Integer>();if(root==null)return list;Stack<TreeNode>st=new Stack<TreeNode>();st.push(root);TreeNode top=null;list.add(root.val);while(!st.empty()){top=st.peek();while(top.left!=null){st.push(top.left);list.add(top.left.val);top=top.left;}while(top.right==null){st.pop();if(!st.empty())top=st.peek();elsebreak;}if(!st.empty()){st.pop();st.push(top.right);list.add(top.right.val);}}return list;}
}
结果:
这篇关于leetcode_144_Binary Tree Preorder Traversal的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!