//morris遍历
//实现时间复杂度为o(n)空间复杂度为O(1)
//首先来对整个树走一遍 通过null节点来返回向上的节点,
public void morris(TreeNode head){
if(head == null) return;
TreeNode cur = head;
TreeNode mostRight = null;
while(cur != null){
mostRight = cur.left;
if(mostRight != null){
while(mostRight.right != null && mostRight != cur){
mostRight = mostRight.right;
}
if(mostRight.right == null){
mostRight.right = cur;
cur = cur.left;
continue;
} else {
mostRight.right = null;
}
}
cur = cur.right;
}
}
//先序遍历的mirrors方法
//到达两次的节点先打印第二次不打印,到达一次的节点只打印一次
public void PreByMirrors(TreeNode head){
if(head == null) return;
TreeNode
mirrors的前序后序中序遍历
最新推荐文章于 2023-03-15 23:57:53 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)