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;
    	}
    }
    
  • 相关阅读:
    Effective_STL 学习笔记(四十) 使仿函数类可适配
    Effective_STL 学习笔记(三十九) 用纯函数做判断式
    PMP考试大纲
    小技巧
    git 常用命令
    java web的返回值对象
    工作任务-SM敏捷核心思维
    树莓派上手
    spring 公用异常处理
    前端现在版本怎么这么乱
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13812016.html
Copyright © 2011-2022 走看看