当前位置:   article > 正文

二叉树中的深搜

二叉树中的深搜

1、计算布尔二叉树的值

2331. 计算布尔二叉树的值 - 力扣(LeetCode)

对于二叉树中的题:一般都是递归:前序遍历,中序遍历,后序遍历-----dfs。

对于根结点树的布尔值:需要知道它的左子树和右子树的布尔值

那么就需要求以左子树的根节点为root的左子树的布尔值,同样右子树的布尔值。

1、重复子问题-->函数头

给一个根节点,求这棵树的布尔值。

bool dfs(root);

2、某个子问题在干嘛-->函数体

计算root的左子树的布尔值和右子树的布尔值的运算结果,与or或。

bool left = dfs(root->left)

bool right = dfs(root->right)

return root->val == 2 ? left | right : left & right;

3、递归出口

遇到叶子节点就返回叶子结点的bool值。

  1. class Solution {
  2. public:
  3. bool evaluateTree(TreeNode* root) {
  4. //出口
  5. if(root->left == nullptr) return root->val;
  6. //记录左右子树的布尔值
  7. bool left = evaluateTree(root->left);
  8. bool right = evaluateTree(root->right);
  9. //计算树的布尔值
  10. return root->val == 2 ? left | right : left & right;
  11. }
  12. };

那么本题:要求总树的布尔值,就需要先求到左右子树的布尔值。

那么这就是一个后序遍历。

2、求根节点到叶节点数字之和

129. 求根节点到叶节点数字之和 - 力扣(LeetCode)

</

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号