美文网首页
二叉树的深度优先遍历与广度优先遍历

二叉树的深度优先遍历与广度优先遍历

作者: twilight_mao | 来源:发表于2018-05-11 08:28 被阅读0次

由数组构造二叉树

image.png
image.png

思路

1.根节点下标为a,根的左子树下标为b,根的右子树下标为c:b=ax2,c=ax2+1
2.数组中每赋一个给TreeNode,则置0

代码

public static TreeNode buildTree(int[] array,int index){
        if(index<array.length){
            int value=array[index];
            if(value!=0){
                TreeNode node=new TreeNode(value);
                array[index]=0;
                node.left=buildTree(array,index*2);
                node.right=buildTree(array,index*2+1);
                return node;
            }
        }
        return null;
    }

深度优先遍历二叉树

思路

采用递归
1.先序遍历:根左右 1245367
2.中序遍历:左根右 4251637
3.后序遍历:左右根 4526731

代码

  //先序,深度优先遍历
    public static void fun(TreeNode tree) {
        if (tree == null) {
            return;
        }
        System.out.println(tree.val);
        if (tree.left != null) {
            fun(tree.left);
        }
        if (tree.right != null) {
            fun(tree.right);
        }
    }

广度优先遍历二叉树

思路

1.利用队列

代码

//广度优先遍历
    public static void fun1(TreeNode tree) {
        LinkedList<TreeNode> list = new LinkedList<>();
        if (tree == null) {
            return;
        }
        list.add(tree);
        while (list.size() != 0) {
            TreeNode n = list.get(0);
            System.out.println(n.val);
            list.remove(0);
            if (n.left != null) {
                list.add(n.left);
            }
            if (n.right != null) {
                list.add(n.right);
            }
        }
    }

相关文章

  • 二叉树遍历

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

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

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

  • 二叉树遍历

    二叉树的遍历分为深度优先遍历(Depth First Traversal)和广度优先遍历(Breath First...

  • 多级树的深度优先遍历与广度优先遍历(Java实现)

    多级树的深度优先遍历与广度优先遍历(Java实现) 深度优先遍历与广度优先遍历其实是属于图算法的一种,多级树可以看...

  • 图的遍历,golang实现

    广度优先遍历 深度优先遍历

  • 广度优先遍历和深度优先遍历

    深度优先遍历 广度优先遍历

  • js-树的遍历

    数据 广度优先遍历 深度优先遍历 深度优先不递归

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

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

  • 遍历树

    遍历一棵二叉树的方式有两种: 深度优先遍历 广度优先遍历 每一种遍历方式又有不同的遍历方法: 深度优先遍历递归基于...

  • 图的遍历 --- 广度优先遍历

    1. 广度优先遍历思路: 还是以之前深度优先遍历的图为例,如下: 所谓广度优先,就类似二叉树的层序遍历,先搞完第一...

网友评论

      本文标题:二叉树的深度优先遍历与广度优先遍历

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