国土资源和建设部网站,赣州网站建设机构,可以建网站的网络公司有哪些,网站 制作价格表1.单值二叉树
965. 单值二叉树https://leetcode.cn/problems/univalued-binary-tree/ 先判断这棵树是否为空#xff0c;如果是空树则是true。再判断左子树是否为空#xff0c;并且左子树的值val和当前节点的val不相同#xff0c;如果这左子树不为空且val不等于root的val则…1.单值二叉树
965. 单值二叉树https://leetcode.cn/problems/univalued-binary-tree/ 先判断这棵树是否为空如果是空树则是true。再判断左子树是否为空并且左子树的值val和当前节点的val不相同如果这左子树不为空且val不等于root的val则返回false再使用相同方式判断右子树。最后递归一下左右子树即可只有左右子树有一个返回false则整体返回false。
bool isUnivalTree(struct TreeNode* root)
{if(rootNULL)return true;if(root-leftroot-left-val!root-val){return false;}if(root-rightroot-right-val!root-val){return false;}return isUnivalTree(root-right)isUnivalTree(root-left);} 2.求二叉树的最大深度
104. 二叉树的最大深度https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 首先先进行判空返回0。然后声明两个变量m和n分别代表树的左右深度并在这里使用递归分别赋值他们的左右子树这里能起到遍历作用搜索。我们再用三目判断来给它赋值取高的那一个因为树的最大深度就是根的高度所以这里我们还要在后面加上一即补充从根子树到根的高度.
int maxDepth(struct TreeNode* root)
{int m0;int n0;if(rootNULL){return 0;}else{mmaxDepth(root-left);nmaxDepth(root-right);}return mn?m1:n1;} 3.翻转二叉树
226. 翻转二叉树https://leetcode.cn/problems/invert-binary-tree/ 翻转一颗二叉树首先保存住当前节点的左右子树然后将保存的左子树left放在right的位置再递归左右子树即可。
struct TreeNode* invertTree(struct TreeNode* root)
{if(rootNULL)return NULL;struct TreeNode* leftroot-right;struct TreeNode* rightroot-left;root-leftleft;root-rightright;invertTree(root-left);invertTree(root-right);return root;
} 4.镜像二叉树
101. 对称二叉树https://leetcode.cn/problems/symmetric-tree/
这一题其实和相同二叉树这个题是很相似的我们可以直接把那个代码拷贝过来使用这一题的讲解在http://t.csdnimg.cn/ArwMx
差别在于最后的递归相同的树是左子树和右子树进行比较那么镜像二叉树就是左子树和右子树进行比较。
bool isSymmetricTree(struct TreeNode* p,struct TreeNode* q)
{//都为空if(qNULLpNULL)return true;//一个为空if(qNULL||pNULL)return false;if(q-val!p-val)return false;return isSymmetricTree(p-left,q-right)isSymmetricTree(p-right,q-left);
}
bool isSymmetric(struct TreeNode* root)
{return isSymmetricTree(root-left,root-right);
}