码迷,mamicode.com
首页 > 其他好文 > 详细

【树】965. 单值二叉树

时间:2020-05-03 16:53:20      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:nbsp   深度   深度优先   判断   ++   return   turn   mic   root   

题目:

技术图片

 

 

 

解答:

方法一:深度优先搜索

思路与算法:

我们先进行一次深度优先搜索,获取这颗树中的所有节点的值。然后,就可以判断所有节点的值是不是都相等了。

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     bool isUnivalTree(TreeNode* root) 
13     {
14         vector <int> ret;
15         if (NULL == root)
16         {
17             return true;
18         }
19 
20         dfs(root, ret);
21 
22         int i = 1;
23         for (i = 1; i < ret.size(); i++)
24         {
25             if (ret[i] != ret[i - 1])
26             {
27                 return false;
28             }
29         }
30         
31         return true;
32     }
33 
34     void dfs(TreeNode *root, vector<int> &ret)
35     {
36         if (root)
37         {
38             ret.push_back(root->val);
39             dfs(root->left, ret);
40             dfs(root->right, ret);
41         }
42     }
43 };

 

方法二:递归

思路与算法:

一颗树是单值的,当且仅当根节点的子节点所在的子树也是单值的,同时根节点的值与子节点的值相同。

我们可以使用递归实现这个判断的过程。left_correct 表示当前节点的左孩子是正确的,也就是说:左孩子所在的子树是单值的,并且当前节点的值等于左孩子的值。right_correct 对当前节点的右孩子表示同样的事情。递归处理之后,当根节点的这两种属性都为真的时候,我们就可以判定这颗二叉树是单值的。

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     bool isUnivalTree(TreeNode* root) 
13     {
14         bool left_correct = (root->left == NULL ||
15                 (root->val == root->left->val && isUnivalTree(root->left)));
16         bool right_correct = (root->right == NULL ||
17                 (root->val == root->right->val && isUnivalTree(root->right)));
18         return left_correct && right_correct;
19     }
20 };

 

【树】965. 单值二叉树

标签:nbsp   深度   深度优先   判断   ++   return   turn   mic   root   

原文地址:https://www.cnblogs.com/ocpc/p/12822174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!