二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,2,3]
//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> preorderTraversal(TreeNode root) {
//创建一个集合List来保存要输出的值
List<Integer> list = new ArrayList<>()
treeNodePre(root,list);
}
public void treeNodePre(TreeNode root,List list){
if(root != null){
list.add(root.val);
treeNodePre(root.left,list);
treeNodePre(root.right,list);
}
}
}
非递归迭代实现
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
if(root == null) return list;
stack.push(root);
while(!stack.isEmpty()){
TreeNode tem = stack.pop();
list.add(tem.val);
if(tem.right != null){
stack.push(tem.right);
}
if(tem.left != null){
stack.push(tem.left);
}
}
return list;
}
莫里斯遍历
待补充……