二叉树即每个节点子节点最多为2的树结构。
(满二叉树)
(完全二叉树)
先序遍历,后续遍历,中序遍历道理是一样的,只不过顺序不同.
这里以中序遍历为例,以下是遍历的顺序,思想就是先找中间节点,再找左节点,再找右节点。但是因为每个节点都有其对应的左子树与右子树。所以找完中间节点之后应该是对其左子树应用中序遍历,再对其右子树进行中序遍历。这个思想在Java代码中体现为递归思想。
源代码
package binaryTree;
/**
* 树结构-二叉树(创建和遍历)
* @author cx998
*
*/
public class BinaryTree {
private Node root;
public void setRoot(Node root)
{
this.root=root;
}
public void frontShow()
{
root.frontShow();
}
public void middleShow()
{
root.middleShow();
}
public void afterShow()
{
root.afterShow();
}
}
class Node{
private Object value;
private Node leftNode;
private Node rightNode;
public Node(Object value)
{
this.value=value;
}
/**
* 先序遍历
*/
public void frontShow()
{
System.out.print(value+" ");
if(leftNode!=null)
leftNode.frontShow();
if(rightNode!=null)
rightNode.frontShow();
}
/**
* 中序遍历
*/
public void middleShow()
{
if(leftNode!=null)
leftNode.middleShow();
System.out.print(value+" ");
if(rightNode!=null)
rightNode.middleShow();
}
/**
* 后序遍历
*/
public void afterShow()
{
if(leftNode!=null)
leftNode.afterShow();
if(rightNode!=null)
rightNode.afterShow();
System.out.print(value+" ");
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public Node getLeftNode() {
return leftNode;
}
public void setLeftNode(Node leftNode) {
this.leftNode = leftNode;
}
public Node getRightNode() {
return rightNode;
}
public void setRightNode(Node rightNode) {
this.rightNode = rightNode;
}
}