zoukankan      html  css  js  c++  java
  • PAT A1115 Counting Nodes in a BST [二叉搜索树]

    题目描述

    链接
    输出一个二叉搜索树的最后两层结点个数a和b,以及他们的和

    分析

    • 用链表存储,建立,注意一定记住insert &加引用,以及root=NULL时新建结点的几个操作
    • dfs求cnt[layer]
    #include<bits/stdc++.h>
    using namespace std;
    
    struct node{
        int data;
        node *lchild, *rchild;
    };
    const int maxn = 1e3+5;
    int a[maxn], n;
    void insert(node *&root, int x){
        if(!root){
            root = new node;
            root->data = x;
            root->lchild = NULL;
            root->rchild = NULL;
            return;
        }
        if(x > root->data) insert(root->rchild, x);
        else insert(root->lchild, x);
    }
    
    node *create(){
        node *root = NULL;
        for(int i=0;i<n;i++){
            insert(root, a[i]);
        }
        return root;
    }
    int cnt[maxn],maxlayer;
    void dfs(node *root, int layer){
        if(!root) return;
        cnt[layer]++;
        if(maxlayer < layer) maxlayer = layer;
        dfs(root->lchild, layer+1);
        dfs(root->rchild, layer+1);
    }
    
    int main(){
        cin>>n;
        for(int i=0;i<n;i++) cin>>a[i];
        node *root = create();
        dfs(root, 0);
        int ans = cnt[maxlayer] + cnt[maxlayer-1];
        cout<<cnt[maxlayer]<<" + "<<cnt[maxlayer-1]<<" = "<<ans<<endl;
    }
    
    
  • 相关阅读:
    前端线上项目汇总
    gulp构建工具学习汇总
    ES6知识点汇总
    页游技术点汇总中
    前后端方案汇总
    vim常用命令
    互联网哲学
    js调试技巧汇总中
    windows下Docker安装MySQL
    RabbitMQ几个常用面试题
  • 原文地址:https://www.cnblogs.com/doragd/p/11289082.html
Copyright © 2011-2022 走看看