Java中二叉樹的前序遍歷、中序遍歷及後續遍歷程式碼
阿新 • • 發佈:2022-03-01
公共類——節點類程式碼:
// Definition for a binary tree node. public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left;this.right = right; } }
一、二叉樹的前序遍歷
class PreOrder { public List<Integer> preorderTest(TreeNode root) { List<Integer> res = new ArrayList<>(); preOrder(root, res); return res; } public void preOrder(TreeNode root, List<Integer> res) {if (root == null) return; //先列印當前節點,然後列印左子樹,最後再列印右子樹 res.add(root.val); preOrder(root.left, res); preOrder(root.right, res); } }
二、二叉樹的中序遍歷
class InOrder { public List<Integer> inorderTest(TreeNode root) { List<Integer> res = newArrayList<>(); inOrder(root, res); return res; } public void inOrder(TreeNode root, List<Integer> res) { if(root == null) return; inOrder(root.left, res); res.add(root.val); inOrder(root.right, res); } }
三、二叉樹的後序遍歷
class PostOrder { public List<Integer> postorderTest(TreeNode root) { List<Integer> res = new ArrayList<>(); postOrder(root, res); return res; } public void postOrder(TreeNode root, List<Integer> res){ if (root == null) return; postOrder(root.left, res); postOrder(root.right, res); res.add(root.val); } }