typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建一个新节点
TreeNode* createNode(int val) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
int levelOrderTraversal(TreeNode* root, int* num)
{
if (root == NULL)
{
return 0;
}
TreeNode** queue = (TreeNode**)malloc(sizeof(TreeNode*)*100);
int front = 0, rear = 0;
//将根节点入队
queue[rear++] = root;
while (front < rear)
{
TreeNode* current = queue[front++];
int leftChild = (current->left != NULL) ? 1 : 0;
int rightChild = (current->right != NULL) ? 1 : 0;
if (leftChild + rightChild == 1)
{
(*num)++;
}
if (current->left != NULL)
{
queue[rear++] = current->left;
}
if (current->right !=NULL)
{
queue[rear++] = current->right;
}
}
free(queue);
return 0;
}
int main()
{
TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->right = createNode(4);
root->right->left = createNode(5);
int num = 0;
levelOrderTraversal(root, &num);
printf("度为1的节点个数为%d", num);
return 0;
}
