• 二叉树的BFS和DFS遍历


    面试常考的点BFS和DFS的遍历。

    给一棵二叉树,写出他的BFS遍历情况(应该就是按层遍历)以及DFS遍历情况。

    BFS 用一个队列存储节点。Queue

    BFS实现代码如下:

     1 // 给定跟节点 求出BFS遍历二叉树的锅。
     2     public List<TreeNode> Bfs_tree(TreeNode root){
     3         Queue<TreeNode> myq = new LinkedList<>();
     4         List<TreeNode> res = new ArrayList<>();
     5         if(root==null) return null;
     6         myq.add(root);
     7         while(!myq.isEmpty()){
     8             int len = myq.size();
     9             for(int i=0;i<len;i++){
    10                 if(myq.peek().left!=null) myq.add(myq.peek().left);
    11                 if(myq.peek().right!=null) myq.add(myq.peek().right);
    12                 res.add(myq.poll());
    13             }
    14         }
    15         return res;
    16     }

    Bfs可参见leetcode:https://leetcode.com/submissions/detail/61715373/

    DFS 遍历二叉树分成前中后序遍历。前面博客中写过了。用栈。

    一般的DFS如下:

     1 //Dfs遍历二叉树 先压栈柚子树 然后左子树
     2     public List<TreeNode> Dfs_tree(TreeNode root){
     3        Stack<TreeNode>  sta = new Stack<>();
     4        List<TreeNode> res = new ArrayList<>();
     5        if(root==null) return null;
     6         // res.add(root);
     7        sta.add(root);
     8        while(!sta.isEmpty()){
     9            TreeNode temp = sta.pop();
    10            res.add(temp);
    11            if(temp.right!=null) sta.push(temp.right);
    12            if(temp.left!=null) sta.push(temp.left);
    13        }
    14         return res;
    15         
    16     }
  • 相关阅读:
    iOS微信支付
    iOS登录及token的业务逻辑(没怎么用过,看各种文章总结)
    IOS 支付宝支付开发流程
    iOS SDWebImage实现原理
    站立会议1
    作业六:团队项目——编写项目的Spec
    作业5
    站立会议8
    站立会议 3
    站立会议 2
  • 原文地址:https://www.cnblogs.com/CongLollipop/p/6858260.html
Copyright © 2020-2023  润新知