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;}
}