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;
    }
    
    
  • 相关阅读:
    最小的K个数
    堆排序
    归并排序
    希尔排序
    快速排序
    二分查找
    数组中出现次数超过一半的数字
    包含min函数的栈
    栈的压入、弹出序列
    中缀表达式转后缀表达式
  • 原文地址:https://www.cnblogs.com/doragd/p/11289082.html
Copyright © 2011-2022 走看看