广度优先遍历二叉树。

C# Codeas below:

class Nodes<T>

{

T data;

Nodes<T> Lnode, Rnode;

public T Data

{

set { data = value; }

get { return data; }

}

public Nodes<T> LNode

{

set { Lnode = value; }

get { return Lnode; }

}

public Nodes<T> RNode

{

set { Rnode = value; }

get { return Rnode; }

}

public Nodes()

{ }

public Nodes(T data)

{

this.data = data;

}

public IEnumerator GetEnumerator()

{

//Reserve node

Queue<Nodes<T>> queue = new Queue<Nodes<T>>();

queue.Enqueue(this);

while (queue.Count >0)

{

Nodes<T> node = queue.Dequeue();

yield return node.data;

if (node.Lnode != null)

{

queue.Enqueue(node.Lnode);

}

if (node.Rnode != null)

{

queue.Enqueue(node.Rnode);

}

}

}

}

你可能感兴趣的:(二叉树)