判断一个二叉树是否是二叉搜索树-创新互联

#include "stdafx.h"
#include#includeusing namespace std;



class Node {public:
	Node(int i);

	int k;
	Node* left;
	Node* right;
};
Node::Node(int i)
{k = i;
	left = NULL;
	right = NULL;
}


Node* newNode[15];

Node*  (*CreateTree(vectorvx))[15]
{int i = 0;

	for (i = 0; i< vx.size(); ++i)
	{newNode[i] = new Node(vx[i]);

	}
	for (i = 0; i< vx.size(); ++i)
	{if ((2 * i + 1)< vx.size())
		{	newNode[i]->left = newNode[2 * i + 1];
		}
		else
		{	return &newNode;
		}
		if ((2 * i + 2)< vx.size())
		{	newNode[i]->right = newNode[2 * i + 2];
		}
		else
		{	return &newNode;
		}

	}


}

void InPrint(Node* n)
{if (n == NULL)
	{return;
	}
	InPrint(n->left);
	printf("%d**", n->k);
	InPrint(n->right);

}

bool ifBSTtree(Node* (*n3)[15], vectorv)
{vectorvMax;
	vectorvMin;
	for (int i=0;ivMax.push_back(v[i]);
		vMin.push_back(v[i]);
	}
	for (int j=v.size()-1;j>0;j--)
	{int m = (j - 1) / 2;//father
		if ((j % 2 == 1)&& ((*(*n3 + m))->k)>vMax[j])//left
		{	vMin[m] = vMin[j];
		}
		else if((j%2==0)&& ((*(*n3+m))->k)	vMax[m] = vMax[j];

		}
		else
		{	return false;
		}
		
	}

	return true;



}

int main()
{//arrT n1;
	
	Node* (*n2)[15];
	n2 = NULL;
	
	
	
	
	int i1[15] = {10,5,15,3,8,13,20,2,4,7,9,12,14,19,50 };

	vectorv1(i1, i1 + 15);

	n2 = CreateTree(v1);
	//n3 = n2;
	InPrint(*n2[0]);


	bool b1 = ifBSTtree(n2, v1);

	printf("%d",b1);

	while (1);
	return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

创新互联建站专注于嘉禾网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供嘉禾营销型网站建设,嘉禾网站制作、嘉禾网页设计、嘉禾网站官网定制、小程序开发服务,打造嘉禾网络公司原创品牌,更为您提供嘉禾网站排名全网营销落地服务。
本文名称:判断一个二叉树是否是二叉搜索树-创新互联
网页链接:http://ybzwz.com/article/dsosed.html