zoukankan      html  css  js  c++  java
  • A1110 Complete Binary Tree [完全二叉树判定]

    在这里插入图片描述
    思路:利用层序遍历判断是否是一棵完全二叉树,给的下标同样利用二叉树的静态写法

    #include<iostream>
    #include<vector>
    #include<queue>
    #include<stack>
    #include<string>
    using namespace std;
    const int maxn = 21;
    int n, last;
    struct node
    {
    	int lchild, rchild;
    }Node[maxn];
    bool notroot[maxn];
    int input(string s)
    {
    	if (s[0] == '-')
    		return -1;
    	else
    	{
    		if (s.size() == 1)
    		{
    			notroot[s[0] - '0'] = true;
    			return s[0] - '0';
    		}
    		else
    		{
    			notroot[(s[0] - '0') * 10 + (s[1] - '0')] = true;
    			return (s[0] - '0') * 10 + (s[1] - '0');
    		}				
    	}
    }
    int findroot()
    {
    	for (int i = 0; i < n; i++)
    	{
    		if (notroot[i] == false)
    			return i;
    	}
    }
    bool bfs(int root)
    {
    	queue<int>q;
    	q.push(root);
    	while (n)
    	{
    		int temp = q.front();
    		q.pop();
    		if (temp == -1)
    			return false;
    		n--;
    		last = temp;
    		q.push(Node[temp].lchild);
    		q.push(Node[temp].rchild);
    	}
    	return true;
    }
    int main()
    {
    	cin >> n;	
    	for (int i = 0; i < n; i++)
    	{
    		string s1, s2;
    		cin >> s1 >> s2;
    		Node[i].lchild = input(s1);
    		Node[i].rchild = input(s2);
    	}
    	int root = findroot();
    	int a = bfs(root);
    	if (a)
    	{
    		cout << "YES " << last << endl;
    	}
    	else
    	{
    		cout << "NO " << root << endl;
    	}
    }
    
  • 相关阅读:
    PAT B1021 个位数统计 (15)
    PAT B1006 换个格式输出整数 (15)
    PAT A1058 A+B in Hogwarts (20)
    PAT A1027 Colors in Mars (20)
    PAT A1019 General Palindromic Number (20 分)
    PAT B1022 D进制的A+B
    J2EE
    MVC
    数据库长连接短连接
    twisted
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13812016.html
Copyright © 2011-2022 走看看