剑指offer十七姊妹篇之二叉树的创建、遍历、判断子二叉树
1、二叉树节点类
public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } public TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; } //---------------------------- public int getVal() { return val; } public void setVal(int val) { this.val = val; } public TreeNode getLeft() { return left; } public void setLeft(TreeNode left) { this.left = left; } public TreeNode getRight() { return right; } public void setRight(TreeNode right) { this.right = right; } }
2、二叉树打印类
public class PrintTree { public void printNode(TreeNode node){ System.out.print(node.getVal()); } //先序遍历 public void theFirstTraversal(TreeNode root) { printNode(root); if (root.getLeft() != null) { //使用递归进行遍历左孩子 theFirstTraversal(root.getLeft()); } if (root.getRight() != null) { //递归遍历右孩子 theFirstTraversal(root.getRight()); } } //中序遍历 public void theInOrderTraversal(TreeNode root) { if (root.getLeft() != null) { theInOrderTraversal(root.getLeft()); } printNode(root); if (root.getRight() != null) { theInOrderTraversal(root.getRight()); } } //后序遍历 public void thePostOrderTraversal(TreeNode root) { if (root.getLeft() != null) { thePostOrderTraversal(root.getLeft()); } if(root.getRight() != null) { thePostOrderTraversal(root.getRight()); } printNode(root); } }