二叉树的深度遍历用递归的话就没有什么好说的了。
- 代码实现
/** * 源代码名称: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); }}