1. 程式人生 > 其它 >Java中二叉樹的前序遍歷、中序遍歷及後續遍歷程式碼

Java中二叉樹的前序遍歷、中序遍歷及後續遍歷程式碼

公共類——節點類程式碼:

//  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 = new
ArrayList<>(); 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);
    }
}