判断一个二叉树是否是二叉搜索树-创新互联
#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