zoukankan      html  css  js  c++  java
  • 十九、二叉树的遍历

    原理图:

    理论值:

         前序遍历:10 5 3 6 20 15 30

         中序遍历:3 5 6 10 15 20 30

         后序遍历:3 6 5 15 30 20 10

    运行结果:

    源代码:

    Node参见上一节,这里就不装逼了。

    Tree:

    public class Tree {
    public Node root; //根节点

    public void insert(int value,String name) //插入结点
    {
    //封装成结点
    Node newNode = new Node(value,name);
    //引用当前结点
    Node current = root;
    //引用父结点
    Node parent;
    //判断是否为空树
    if(current == null)
    {
    root = newNode;
    return;
    }else
    {
    while(true)
    {
    parent = current; //父结点指向当前结点
    if(current.data > value) //要插入的值小于该结点的值
    {
    current = current.leftChild; //往左走
    if(current == null) //到了叶子结点
    {
    parent.leftChild =newNode;
    return;
    }
    }
    else
    {
    current = current.rightChild; //往右走
    if(current == null)
    {
    parent.rightChild = newNode;
    return;
    }
    }
    }

    }


    }


    //查找结点
    public Node find(int value)
    {
    Node current = root; //指向根节点

    while(current.data != value)
    {
    if(current.data > value)
    {
    current = current.leftChild;
    }
    else
    {
    current = current.rightChild;
    }

    if(current == null)
    {
    return null;
    }
    }
    return current;
    }


    /*
    * 前序遍历
    * */
    public void frontOrder(Node localNode)
    {
    if(localNode != null) //遍历的不是叶子结点
    {
    System.out.print(localNode.data + "," + localNode.name+" "); //打印根
    frontOrder(localNode.leftChild); //左子树
    frontOrder(localNode.rightChild); //右子树
    }

    }

    /*中序遍历*/
    public void inOrder(Node localNode)
    {
    if(localNode != null)
    {
    inOrder(localNode.leftChild); //中序遍历左子树
    System.out.print(localNode.data + "," + localNode.name+" "); //打印根
    inOrder(localNode.rightChild); //遍历右子树
    }
    }

    /*后序遍历*/
    public void lastOrder(Node localNode)
    {
    if(localNode != null)
    {
    lastOrder(localNode.leftChild); //后序遍历左子树
    lastOrder(localNode.rightChild); //后序遍历右子树
    System.out.print(localNode.data + "," + localNode.name+" "); //打印根
    }
    }


    }

  • 相关阅读:
    arcengine动态显示所需字段值
    arcengine标注转注记
    AreEngine 求最小面积的外接矩形,非IEnvelope,表达不清楚了
    数据库压缩(以mdb为测试对象,Arcengine——ILocalDataCompact接口与IDataCompact接口的使用)
    iMac环境下 配置flutter镜像
    微信小程序radio点选框,再次点击取消
    修改状态栏的颜色
    ios10 设置权限
    使用js动态更改:after的值
    canvas时钟
  • 原文地址:https://www.cnblogs.com/fyz666/p/8513086.html
Copyright © 2011-2022 走看看