二叉树遍历-Morris遍历

使用Morris遍历二叉树可以实现空间复杂度 O(1) 时间复杂度 O(N)
下面是Morris遍历的主要过程
1.初始时,另cur=head
2.若cur=null,结束,否则继续
3.若cur无左子树,另cur=cur.right
4.若cur有左子树,找到左子树上最右的节点,记为mostRight
如果mostRight.right=null则, mostRight.right=cur; cur=cur.left;
如果mostRight.right=cur;则, mostRight.right=null; cur=cur.right;

public void morris(Node head){
	if(head==null)
		return ;
	Node cur=head;
	Node mostRight=null;
	while(cur!=null){
		mostRight.right=cur.left;
		if(mostRight.right!=null ){
			while(mostRight.right!+null&&mostRight.right!=cur)
				mostRight=mostRight.right;
		}
		if(mostRight.right==null){
			mostRight.right=cur;
			cur=cur.left
			continue;
		}else{
			mostRight.right=null;
			
		}
		cur=cur.left;
			
			
	}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值