【每日一题-13】二叉树中查找节点/子树

来源:互联网 发布:怎么代理淘宝网店 编辑:程序博客网 时间:2024/05/16 08:24

在二叉树中查找一个节点

struct TreeNode{int data;TreeNode* left;TreeNode* right;TreeNode(int val): data(val), left(NULL), right(NULL){}};bool FindNode(TreeNode* root, TreeNode* node){if (NULL == root)return false;if (root->data == node->data)return true;return FindNode(root->left, node) || FindNode(root->right, node);}
判断一个树是否是另一个树的子树

bool hasSubTree(TreeNode* root1, TreeNode* root2){if (root1 == NULL || root2 == NULL)return false;if (root1->data == root2->data){if (isSubTree(root1, root2))return true;}return hasSubTree(root1->left, root2) || hasSubTree(root1->right, root2);}bool isSubTree(TreeNode* root1, TreeNode* root2){if (root1 == NULL)return true;if (root2 == NULL)return false;if (root1->data != root2->data)return false;return isSubTree(root1->left, root2->left) && isSubTree(root1->right, root2->right);}

原创粉丝点击