判断一个节点是否在一棵二叉树中&&判断一颗二叉树是是否是另一颗树的子树

来源:互联网 发布:淘宝买书有什么好店铺 编辑:程序博客网 时间:2024/06/05 08:17

1.判断一个节点是否在一颗二叉树中
首先判断此节点是不是根节点,是根节点的话就返回表示节点在树中,否则递归根节点的左右子树,继续向下寻找

bool _IsNode(Node* node,Node* root)    {        if (root == NULL)            return false;        //节点位根节点        if (node->_data == root->_data)            return true;        //节点不是根节点        else        {            //左右子树中找            return _IsNode(node, root->_left) || _IsNode(node, root->_right);        }    }

2.判断一颗二叉树是是否是另一颗树的子树
1>判断2棵树的根节点是不是相同,如果相同,继续递归判断他们的左右子树是不是相同
2>2棵树的根节点不相同的话,递归判断t1的左子树或者右子树是否跟t2一样

bool _IsChildTree(Node* root1, Node* root2)    {        if (root2 == NULL)            return true;        if (root1 == NULL)            return false;        if (root1->_data == root2->_data)            return _IsChildTree(root1->_left, root2->_left)            && _IsChildTree(root1->_right, root2->_right);        else            return _IsChildTree(root1->_left, root2) || _IsChildTree(root1->_right, root2);    }
阅读全文
0 0
原创粉丝点击