1115. Counting Nodes in a BST (30)

    xiaoxiao2021-08-22  91

    The left subtree of a node contains only nodes with keys less than or equal to the node's key.

    注意地址的定义node*

    #include<iostream> #include<queue> using namespace std; struct node{ int data; node* lchild; node* rchild; int level; }; void insert(node* &root,int data){ if(root==NULL){ root = new node; root->data=data; root->lchild=root->rchild=NULL; root->level=1; return; } if(data<=root->data){ insert(root->lchild,data); } else{ insert(root->rchild,data); } } const int MAX = 1010; int levelnodes[MAX]={0}; void levelorder(node* root){ queue<node*> q; node* p=root; q.push(p); levelnodes[1]=1; while(!q.empty()){ p=q.front(); q.pop(); if(p->lchild!=NULL){ q.push(p->lchild); p->lchild->level=p->level+1; levelnodes[p->lchild->level]++; } if(p->rchild!=NULL){ q.push(p->rchild); p->rchild->level=p->level+1; levelnodes[p->rchild->level]++; } } } int main(){ int n; node* root=NULL; cin>>n; for(int i=0;i<n;i++){ int data; scanf("%d",&data); insert(root,data); } levelorder(root); int low=1; while(levelnodes[low++]!=0); //for(int i=0;i<=low;i++) cout<<levelnodes[i]<<endl; printf("%d + %d = %d\n",levelnodes[low-2],levelnodes[low-3],levelnodes[low-2]+levelnodes[low-3]); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-676878.html

    最新回复(0)