zoukankan      html  css  js  c++  java
  • 第三次日志

    二叉树:
    二叉树是一类非常重要的特殊的树形结构
    在二叉树中,每个结点至多有2个儿子,并且有 左、右之分。
    位于左边的孩子叫做左孩子 位于右边的孩子叫做右孩子
    二叉树 VS 普通树 、有序树:
    二叉树与度数不超过2的树不同,与度数不超过2 的有序树也不同。 在普通的树中,若结点只有一个儿子,无左右 之说。
    在有序树中,虽然一个结点的儿子之间是有左 右次序的,但若该结点只有一个儿子时,就无须 区分其左右次序。
    而在二叉树中,即使是一个儿子也有左右之分
    二叉树结点及二叉树的定义:
    typedef struct Node
    {
    DataType data;
    struct Node *LChild;
    struct Node *RChild;
    } Bitnode, BiTree;
    二叉树的创建:
    void CreateBiTree(BiTree bt)
    {
    char ch; ch = getchar();
    if(ch'.') bt=NULL;
    else
    {
    bt=(BiTree)malloc(sizeof(BiTNode));
    (bt)->data=ch; CreateBiTree(&((bt)->LChild)); //生成左子树
    CreateBiTree(&((bt)->RChild)); //生成右子树
    }
    }
    二叉树的遍历:
    先序遍历 先序列表 最先访问根
    中序遍历 中序列表 中间访问根
    后序遍历 后序列表 最后访问
    先序遍历代码:
    void PreOrder(BiTree root)
    {
    if ( root!=NULL )
    {
    Visit(root->data);//访问根结点
    PreOrder(root->LChild);
    PreOrder(root->RChild);
    }
    }
    中序遍历代码:
    void InOrder(BiTree root)
    {
    if ( root!=NULL )
    {
    InOrder(root->LChild);
    Visit(root->data);//访问根结点
    InOrder(root->RChild);
    }
    }
    后序遍历代码:
    void PostOrder(BiTree root)
    {
    if ( root!=NULL )
    {
    PostOrder(root->LChild);
    PostOrder(root->RChild);
    Visit(root->data);//访问根结点
    }
    }
    :二叉树的递归遍历算法的时间复杂度是:O(n)
    创建二叉树以及运用先序遍历输出
    include<stdio.h>
    include<stdlib.h>
    //树的定义(结点定义)
    typedef char DataType;
    typedef struct Node {
    DataType data;
    struct Node *lchild;
    struct Node rchild;
    } BiNode,BiTree;
    //创建树的二叉链表(递归)
    void CreateBiTree(BiTree bt)
    {
    char ch;
    ch = getchar();
    if(ch
    '.') {bt=NULL;}
    else
    {
    bt= (BiNode )malloc(sizeof(BiNode));
    (bt)->data=ch;
    CreateBiTree(&((bt)->lchild)); //生成左子树
    CreateBiTree(&((
    bt)->rchild)); //生成右子树
    }
    }
    //输出二叉树的元素(先序)
    void Print(BiTree bt)
    {
    if(bt!=NULL)
    {
    printf("%c", bt->data);
    Print(bt->lchild);
    Print(bt->rchild);
    }
    }
    //主函数
    void main()
    {
    BiTree T;
    DataType x;
    CreateBiTree(&T);
    printf("先序:");
    Print(T);
    }

  • 相关阅读:
    天线设计相关性能参数
    为什么在晶振上并电阻?
    晶体谐振器 晶体振荡器 正确区分
    示波器入门之采样率、存储深度
    示波器你了解多少?存储深度是什么?
    数字时序:时钟信号、抖动、迟滞和眼图
    信号完整性与电源完整性的详细分析
    信号完整性入门笔记三---阻抗及影响阻抗的因素
    H5——条件注释
    H5——meta
  • 原文地址:https://www.cnblogs.com/scc19/p/12832887.html
Copyright © 2011-2022 走看看