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

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

作者: 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;

}

相关文章

  • 二叉树的遍历

    递归的宗旨: 先序遍历、中序遍历、后序遍历一般使用深度优先搜索DFS实现,层次遍历一般用广度优先搜索BFS实现。 ...

  • 5. 深度优先、广度优先

    1. 二叉树的深度优先遍历和广度优先遍历2. 深度优先搜索递归和非递归实现 深度优先(DFS):前序遍历 广度优先...

  • 二叉树遍历

    二叉树的遍历,分为深度优先遍历和广度优先遍历,其中深度优先遍历又分为有前序、中序、后序遍历,广度优先遍历就是按层遍...

  • GO学习笔记(6) - 二叉树构建与遍历

    目录 二叉树介绍 广度优先遍历创建二叉树广度遍历 深度优先遍历先、中、后序遍历利用函数编程得到节点总数利用chan...

  • 算法之二叉树遍历

    二叉树遍历可以使用深度优先周游二叉树和广度优先周游二叉树,深度优先又可以分为前序、中序、后序三种方式遍历,每种方式...

  • 02-13:leetcode重刷3之树的遍历

    二叉树的遍历: 前序、中序、后序遍历 二叉搜索树 小左,大右,所以二叉搜索树的中序遍历是递增序列 (1)深度优先遍...

  • js二叉树(前中后序遍历)+多叉树(深度优先遍历和广度优先遍历)

    ?二叉树三种遍历 和 多叉树 深度优先遍历和广度优先遍历 二叉树遍历 先序遍历(根左右) 中序遍历(左根右) 后序...

  • Binary Tree - Swift 相关实现

    原文参考 节点 翻转二叉树 前序遍历 中序遍历 后序遍历 层次遍历/广度优先遍历 深度优先遍历 判断二叉排序树

  • 树的几种遍历方式

    主要记录一下对于二叉树,进行遍历的几种方式,包括: 前序遍历 中序遍历 后序遍历 深度优先遍历 广度优先遍历 我们...

  • 二叉树遍历(先序、中序、后序)

    二叉树有多种遍历方法,有层次遍历、深度优先遍历、广度优先遍历等。 本文只涉及二叉树的先序、中序、后序的递归和非递归...

网友评论

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

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