前序遍历(pre-order traverse) public void DFS_Pre(Node root) { Stack<Node> s = new Stack<Node>(); s.Push(root); while (s.Count != 0) { Node n = s.Pop(); Console.WriteLine(n.value); if (n.right != null) s.Push(n.right); if (n.left != null) s.Push(n.left); } } 广度优先遍历(非递归)用到了queue public void BFS(Node root) { Queue<Node> q = new Queue<Node>(); q.Enqueue(root); while (q.Count != 0) { Node n = q.Dequeue(); Console.WriteLine(n.value); if (n.left != null) q.Enqueue(n.left); if (n.right!=null) q.Enqueue(n.right); } } http://zhidao.baidu.com/question/197956082.html