100. Same Tree
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(!p || !q) return p==q;
return p->val==q->val && isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
}
};
404. Sum of Left Leaves
中序遍历,判断左子树为叶子结点,累加
class Solution {
public:
int sum=0;
int sumOfLeftLeaves(TreeNode* root) {
inorder(root);
return sum;
}
void inorder(TreeNode* root){
if(!root) return ;
inorder(root->left);
if(root->left){
if(!root->left->left && ! root->left->right)
sum+=root->left->val;
}
inorder(root->right);
}
};
108.将数组转为二叉搜索树
给定一个数组,其中元素按升序排序,将其转换为高度平衡的BST,每个节点的两个子树的深度相差不超过1。
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size()==0) return NULL;
TreeNode* head=help(nums,0,nums.size()-1);
return head;
}
TreeNode* help(vector<int>& nums,int start,int end){
if(start>end) return NULL;
int mid=(start+end)/2;
TreeNode *node =new TreeNode(nums[mid]);
node->left=help(nums,start,mid-1);
node->right=help(nums,mid+1,end);
return node;
}
};
563.二叉树倾斜度
给定二叉树,求整颗二叉树的倾斜度
树节点的倾斜被定义为所有左子树节点值的总和与所有右子树节点值的总和之间的绝对差。空节点倾斜0。
整棵树的倾斜度定义为所有节点倾斜的总和。