栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetCode之二叉树的前中后序遍历递归和非递归

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetCode之二叉树的前中后序遍历递归和非递归

package com.company;

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

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;
    }


    
    public static void before(TreeNode treeNode, List result) {
        if(treeNode == null) {
            return;
        }
        result.add(treeNode.val);
        before(treeNode.left, result);
        before(treeNode.right, result);
    }

    
    public static void beforeNoIte(TreeNode treeNode, List result) {
        Stack stack = new Stack<>();
        stack.push(treeNode);
        while (!stack.isEmpty()) {
            TreeNode tempNode = stack.pop();
            result.add(tempNode.val);
            if(tempNode.right != null) {
                stack.push(tempNode.right);
            }
            if(tempNode.left != null) {
                stack.push(tempNode.left);
            }
        }
    }

    
    public static void after(TreeNode treeNode, List result){
        if(treeNode == null) {
            return;
        }
        after(treeNode.left, result);
        after(treeNode.right, result);
        result.add(treeNode.val);
    }

    
    public static void afterNoIte(TreeNode treeNode, List s2){
        Stack s1 = new Stack<>();
        Stack result = new Stack<>();
        s1.push(treeNode);
        while (!s1.isEmpty()) {
            TreeNode temp = s1.pop();
            result.push(temp);
            if(temp.left != null) {
                s1.push(temp.left);
            }
            if(temp.right != null) {
                s1.push(temp.right);
            }
        }
        while (!result.isEmpty()) {
            s2.add(result.pop().val);
        }
    }

    
    public static void middle(TreeNode treeNode, List result) {
        if(treeNode == null) {
            return;
        }
        middle(treeNode.left, result);
        result.add(treeNode.val);
        middle(treeNode.right, result);
    }


    
    public static void middleNoIte(TreeNode treeNode, List result) {
        Stack stack = new Stack<>();
        TreeNode head = treeNode;
        while (head != null) {
            stack.push(head);
            head = head.left;
        }
        while (!stack.isEmpty()) {
            TreeNode temp = stack.pop();
            result.add(temp.val);
            if (temp.right != null) {
                TreeNode next = temp.right;
                while (next != null) {
                    stack.push(next);
                    next = next.left;
                }
            }
        }
    }

    public static void main(String[] args) {
        TreeNode t1 = new TreeNode(1, null, null);
        TreeNode t2 = new TreeNode(2, null, null);
        TreeNode t3 = new TreeNode(3, t1, t2);
        TreeNode t4 = new TreeNode(4, null, null);
        TreeNode t5 = new TreeNode(5, null, null);
        TreeNode t6 = new TreeNode(6, t4, t5);
        TreeNode root = new TreeNode(7, t3, t6);
        List result = new ArrayList<>();
        middleNoIte(root, result);
        for (int num: result) {
            System.out.print(num);
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782055.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号