递归算法代码记录:
public List<Integer> preorderTraversal(TreeNode root) {
if(root==null){
return new ArrayList();
}
List<Integer> resultList=new ArrayList<>();
resultList.add(root.val);
resultList.addAll(preorderTraversal(root.left));
resultList.addAll(preorderTraversal(root.right));
return resultList;
}
非递归算法代码记录:
public List<Integer> preorderTraversal(TreeNode root) {
if(root==null){
return null;
}
List<Integer> resultList=new ArrayList<>();
Stack<TreeNode> stack=new Stack<>();
TreeNode tempNode=null;
while(root!=null||!stack.isEmpty()){
if(root!=null){
resultList.add(root.val);
stack.push(root);
root=root.left;
}else{
tempNode=stack.pop();
root=tempNode.right;
}
}
return resultList;
}
如果您有更好的解法,欢迎您在留言区补充,感谢!!