思路:
别问,问就是递归
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
} TreeNode,*SearchTree,*Position;
void PreOrderTraversal(SearchTree T)
{
if(T==NULL)
return;
cout<<T->val<<" ";
PreOrderTraversal(T->left);
PreOrderTraversal(T->right);
}
SearchTree Insert(int val,SearchTree T)
{
if(T==NULL)
{
T = (SearchTree)malloc(sizeof(TreeNode));
if(T==NULL)
{
cout<<"MALLOC ERROR\n"<<endl;
exit(1);
}
T->val = val;
T->left = T->right = NULL;
}
else
{
if(val>T->val)
T->right = Insert(val,T->right);
else if(val<T->val)
T->left = Insert(val,T->left);
}
return T;
}
class Solution
{
public:
bool isUnivalTree(TreeNode* root)
{
int num = root->val;
bool L,R;
if(root->left==NULL)
L = true;
else if(root->left->val == num)
L = isUnivalTree(root->left);
else
L = false;
if(root->right==NULL)
R = true;
else if(root->right->val == num)
R = isUnivalTree(root->right);
else
R = false;
return L&&R;
}
};
int main()
{
Solution s;
SearchTree T1 = NULL;
SearchTree T2 = NULL;
T1 = Insert(3,T1);
T1 = Insert(3,T1);
T1 = Insert(3,T1);
T1 = Insert(3,T1);
T1 = Insert(3,T1);
// T1 = Insert(6,T1);
// T1 = Insert(9,T1);
PreOrderTraversal(T1);
cout<<endl;
if(s.isUnivalTree(T1))
cout<<"TRUE"<<endl;
else
cout<<"FALSE"<<endl;
return 0;
}