【数据结构与算法】二叉树深度遍历(递归)

二叉树的深度遍历用递归的话就没有什么好说的了。

  • 代码实现

/**
 * 源码名称:TreeIteratorRecursion.java 
 * 日期:2014-08-23 
 * 程序功能:二叉树深度遍历 
 * 版权:CopyRight@A2BGeek 
 * 作者:A2BGeek
 */
public class TreeIteratorRecursion {
	class TreeNode {
		private T mNodeData;
		private TreeNode mLeftChild;
		private TreeNode mRightChild;

		public TreeNode(T data, TreeNode left, TreeNode right) {
			// TODO Auto-generated constructor stub
			mNodeData = data;
			mLeftChild = left;
			mRightChild = right;
		}

		public T getData() {
			return mNodeData;
		}

		public void setData(T data) {
			mNodeData = data;
		}

		public TreeNode getLeft() {
			return mLeftChild;
		}

		public void setLeft(TreeNode left) {
			mLeftChild = left;
		}

		public TreeNode getRight() {
			return mRightChild;
		}

		public void setRight(TreeNode right) {
			mRightChild = right;
		}
	}

	public TreeNode createTree() {
		TreeNode h = new TreeNode("h", null, null);
		TreeNode g = new TreeNode("g", null, null);
		TreeNode f = new TreeNode("f", null, null);
		TreeNode e = new TreeNode("e", null, null);
		TreeNode d = new TreeNode("d", h, null);
		TreeNode c = new TreeNode("c", f, g);
		TreeNode b = new TreeNode("b", d, e);
		TreeNode a = new TreeNode("a", b, c);
		return a;
	}

	public void preIterate(TreeNode root) {
		if (root == null) {
			return;
		} else {
			System.out.print(root.getData() + " ");
			preIterate(root.getLeft());
			preIterate(root.getRight());
		}
	}

	public void midIterate(TreeNode root) {
		if (root == null) {
			return;
		} else {
			midIterate(root.getLeft());
			System.out.print(root.getData() + " ");
			midIterate(root.getRight());
		}
	}

	public void postIterate(TreeNode root) {
		if (root == null) {
			return;
		} else {
			postIterate(root.getLeft());
			postIterate(root.getRight());
			System.out.print(root.getData() + " ");
		}
	}

	public static void main(String[] args) {
		TreeIteratorRecursion treeIteratorRecursion = new TreeIteratorRecursion();
		TreeNode root = treeIteratorRecursion.createTree();
		treeIteratorRecursion.preIterate(root);
		System.out.println();
		treeIteratorRecursion.midIterate(root);
		System.out.println();
		treeIteratorRecursion.postIterate(root);
	}
}


你可能感兴趣的:(数据结构与算法,数据结构,算法,二叉树,遍历,递归)