1.题目要求:
给你一个 二叉树 的根结点 root,该二叉树由恰好 3 个结点组成:根结点、左子结点和右子结点。
如果根结点值等于两个子结点值之和,返回 true ,否则返回 false 。
2.思路:
直接数组前序遍历,然后判断后面两个数是否等于第一个数。
3.代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
void preorder(struct TreeNode* root, int* number,int* length){
if(root == NULL){
return;
}
number[(*length)++] = root->val;
preorder(root->left,number,length);
preorder(root->right,number,length);
}
bool checkTree(struct TreeNode* root){
int* length = (int*)malloc(sizeof(int));
int* number = (int*)malloc(sizeof(int) * 3);
*length = 0;
preorder(root,number,length);
if(number[0] == number[1] + number[2]){
return true;
}else{
return false;
}
}