[Random Coding] Tree Iterator

package RandomPractice;

import java.util.NoSuchElementException;
import util.*;

public class TreeIterator {
	private BTNode next;
	public TreeIterator(BTNode root){
		next = root;
		if(next == null)
			return;
		while(next.left != null)
			next = next.left;
	}
	public boolean hasNext(){
		return next != null;
	}
	public BTNode next(){
		if(!hasNext())
			throw new NoSuchElementException();
		BTNode result = next;
		if(next.right != null){
			next = next.right;
			while(next.left != null)
				next = next.left;
		} else{
			while(true){
				if(next.parent == null){
					next = null;
					break;
				} 
				if(next.parent.left == next){
					next = next.parent;
					break;
				}
				next = next.parent;
			}
		}
		return result;
	}
	public static void main(String[] args){
		BTNode root = new BTNode(4);
		root.left = new BTNode(2);
		root.right = new BTNode(5);
		root.left.parent = root;
		root.right.parent = root;
		root.left.left = new BTNode(1);
		root.left.right = new BTNode(3);
		root.left.left.parent = root.left;
		root.left.right.parent = root.left;
		TreeIterator it = new TreeIterator(root);
		while(it.hasNext())
			System.out.println(it.next().value);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值