Java-实现二叉树的遍历

TreeNode.java

package com.wanali.java_ds.ergodictree;

public class TreeNode {
	public Object data;
	public TreeNode lchild;
	public TreeNode rchild;

	// 构造空结构体
	public TreeNode() {
		this(null);
	}

	// 左右节点为空
	public TreeNode(Object data) {
		this.data = data;
	}

	// 定义非空节点
	public TreeNode(Object data, TreeNode lchild, TreeNode rchild) {
		this.data = data;
		this.lchild = lchild;
		this.rchild = rchild;
	}

}

Tree.java

package com.wanali.java_ds.ergodictree;

public class Tree {
	TreeNode root;

	public Tree() {
		this(null);
	}

	public Tree(TreeNode root) {
		this.root = root;
	}

	//
	public void preRootTraverse(TreeNode T) {
		if (T != null) {
			System.out.print(T.data);
			preRootTraverse(T.lchild);
			preRootTraverse(T.rchild);
		}
	}

	public void inRootTraverse(TreeNode T) {
		if (T != null) {
			inRootTraverse(T.lchild);
			System.out.print(T.data);
			inRootTraverse(T.rchild);
		}
	}

	public void postRootTarverse(TreeNode T) {
		if (T != null) {
			postRootTarverse(T.lchild);
			postRootTarverse(T.rchild);
			System.out.print(T.data);
		}
	}

	public TreeNode getRoot() {
		return root;
	}

	public void setRoot(TreeNode root) {
		this.root = root;
	}

}

TestTree.java

package com.wanali.java_ds.ergodictree;

public class TestTree {
	public Tree creatTree() {
		TreeNode d = new TreeNode('D');
		TreeNode g = new TreeNode('G');
		TreeNode h = new TreeNode('H');
		TreeNode e = new TreeNode('E');
		TreeNode f = new TreeNode('F', null, h);
		TreeNode b = new TreeNode('B', d, f);
		TreeNode c = new TreeNode('C', f, null);
		TreeNode a = new TreeNode('A', b, c);
		return new Tree(a);// 创建根节点为a的二叉树
	}

	public static void main(String[] args) {
		TestTree testTree = new TestTree();
		Tree tree = testTree.creatTree();
		TreeNode root = tree.root;// 获得树的根节点
		System.out.println("先序遍历:");
		tree.preRootTraverse(root);
		System.out.println("\n" + "中序遍历:");
		tree.inRootTraverse(root);
		System.out.println("\n" + "后序遍历:");
		tree.postRootTarverse(root);

	}

}

运行结果如下:

输入图片说明

猜你喜欢

转载自my.oschina.net/u/3778090/blog/1805770