文章目录
构造二叉树
所构造的二叉树如图所示:
前中序概念
定义是根据输出父节点的顺序而定的:
前序:先输出父节点,接着输出左节点,最后输出右节点。
中序:先输出左节点,接着输出父节点,最后输出右节点。
后序:先输出左节点,接着输出右节点,最后输出父节点。
前序遍历-查找-图示
输出:
代码:
public void listTreeByPre(HeroNode node) {
if (null == node) {
return;
}
System.out.print(node.getName() + "->");
if (null != node.leftNode) {
listTreeByPre(node.leftNode);
}
if (null != node.rightNode) {
listTreeByPre(node.rightNode);
}
}
中序遍历-查找 图示
输出:
代码:
public void listTreeByInfix(HeroNode node) {
if (null == node) {
return;
}
if (null != node.leftNode) {
listTreeByInfix(node.leftNode);
}
System.out.print(node.getName() + "->");
if (null != node.rightNode) {
listTreeByInfix(node.rightNode);
}
}
后序遍历-查找 图示
输出:
代码;
public void listTreeByPost(HeroNode node) {
if (null == node) {
return;
}
if (null != node.leftNode) {
listTreeByPost(node.leftNode);
}
if (null != node.rightNode) {
listTreeByPost(node.rightNode);
}
System.out.print(node.getName() + "->");
}
层次遍历
安树层输出
输出:
代码:
public void listTreeByLevel(HeroNode node) {
if (null != node) {
LinkedList<HeroNode> list = new LinkedList<HeroNode>();
list.add(node);
HeroNode currentNode;
while (!list.isEmpty()) {
currentNode = list.poll();
System.out.print(currentNode.getName() + "->");
if (null != currentNode.leftNode