美文网首页
深度优先搜索实现后序遍历二叉树

深度优先搜索实现后序遍历二叉树

作者: whynotybb | 来源:发表于2019-06-04 20:53 被阅读0次

    利用深度搜索,元素出栈的顺序就是后序遍历树的顺序。

    后序遍历 获取下一个未访问结点,优先返回左子结点

    public static void postorder(TreeNode root){

    ArrayList stack=new ArrayList<>();

    Set visited=new HashSet<>();

    stack.add(root);

    visited.add(root);

    while (!stack.isEmpty()){

    TreeNode node=getUnvisitedNode(stack.get(stack.size()-1),visited);

    if(node==null){

    TreeNode node1 =stack.remove(stack.size()-1);

    System.out.println(node1.val);

    }else {

    stack.add(node);

    visited.add(node);}}}

    获取下一个未访问结点:

    private static TreeNode getUnvisitedNode(TreeNode node, Set visited){

    if (node.left!=null&&!visited.contains(node.left)){

    return node.left;

    }

    if (node.right!=null&&!visited.contains(node.right)){

    return node.right;

    }

    return null;

    }

    相关文章

      网友评论

          本文标题:深度优先搜索实现后序遍历二叉树

          本文链接:https://www.haomeiwen.com/subject/hiarxctx.html