struct node { int val; node* left; node* right; node() { val = 1; left = NULL; right = NULL; } }; vector<int> s;
void(node*root,int depth) { if (root == NULL) return; if (root->left == NULL&&root->right == NULL) { s.push_back(depth); } if (root->left != NULL) { leafDepth(root->left, depth + 1); } if (root->right != NULL) { leafDepth(root->right, depth + 1); } }
boolisRuledTree(node*root) { if (root == NULL) returntrue; leafDepth(root, 0); int mi = 0x7fffffff; int ma = 0x80000000; for (int i = 0; i < s.size(); i++) { if (mi > s[i]) mi = s[i]; if (ma < s[i]) ma = s[i]; } int x = mi - ma; if (x>1 || x < -1) returnfalse; elsereturntrue; }
intmain() { node *root = new node; root->left = new node; root->right = new node; root->right -> left = new node; root->right->left->left = new node; bool flag = isRuledTree(root);
近期评论