首页 > 其他 > 详细

《剑指offer》

时间:2020-08-09 11:06:11      阅读:72      评论:0      收藏:0      [点我收藏+]

1.剑指 Offer-使用DFS和BFS解机器人的运动范围

https://mp.weixin.qq.com/s/LV9mGemmg0fvn7kEWCjCMw

附二叉树的DFS和BFS:

技术分享图片
package traversalAlgorithm;

import java.util.LinkedList;
import java.util.Stack;

public class DepthFirstTraversal {
    public static void main(String[] args) {
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);
        root.right.left = new TreeNode(6);
        root.right.right = new TreeNode(7);
//        preOrderTraverse2(root);
        levelTraverse(root);
    }
//    1.先序遍历 递归实现
    public static void preOrderTraverse1(TreeNode root){
        if(root==null)return;
        System.out.print(root.val+" ");
        preOrderTraverse1(root.left);
        preOrderTraverse1(root.right);
    }
//    2.先序遍历 非递归实现---栈
    public static void preOrderTraverse2(TreeNode root) {
        if(root==null)return;
        Stack<TreeNode> stack = new Stack<>();
        stack.push(root);
        while(!stack.isEmpty()){
            TreeNode node = stack.pop();
            System.out.print(node.val+" ");
            if(node.right!=null) stack.push(node.right);
            if(node.left!=null) stack.push(node.left);
        }
    }
//    3.层次遍历 / 广度遍历
    public static void levelTraverse(TreeNode root) {
        if(root==null) return;
        LinkedList<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()){
            TreeNode node = queue.poll();
            System.out.print(node.val+" ");
            if(node.left!=null) queue.offer(node.left);
            if (node.right!=null) queue.offer(node.right);
        }
    }
}
View Code

 

《剑指offer》

原文:https://www.cnblogs.com/jingpeng77/p/13461751.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!