解题思路:
morris遍历提交代码:
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res=new ArrayList<>();
if(root==null) return res;
TreeNode p1=root,p2;
while(p1!=null) {
if(p1.left!=null) {
p2=p1.left;
while(p2.right!=null&&p2.right!=p1)
p2=p2.right;
if(p2.right==null) {
p2.right=p1;
res.add(p1.val);
p1=p1.left;
}else {
p2.right=null;
p1=p1.right;
}
}else {
res.add(p1.val);
p1=p1.right;
}
}
return res;
}
}
运行结果: