一、问题描述
1.遍历二叉树指定层次的所有结点
2.统计指定层的搜索结点个数
3.对二叉树进行层次遍历
4.找到二叉树中每一层的第一个结点或最后一个结点
二、问题分析
对树结构的问题我们首先会想到使用递归来解决,因为树结构完美适合递归,树的前序、中序、后序遍历使用递归很容易就可以解决,并且很容易理解。对于树结构的层次遍历则会稍微麻烦一点(当然,也很简单),基于层次遍历的问题也有很多,现在我们就着重来分析前面提到的3个问题。
什么是层次遍历 -- 即按照节点在每一层的顺序从上至下,由左到右进行遍历。
所有的结果都是基于如下的树结构:
树的数据结构的具体代码如下:
class Node { private String data; private Node lChild; private Node rChild; public Node(String data) { this.data = data; } public Node(String data, Node lChild, Node rChild) { this.data = data; this.lChild = lChild; this.rChild = rChild; } public Node getLChild() { return lChild; } public Node getRChild() { return rChild; } public void setRChild(Node rChild) { this.rChild = rChild; } public void setLChild(Node lChild) { this.lChild = lChild; } @Override public String toString() { return data; } }