zoukankan      html  css  js  c++  java
  • 常见算法之17---二叉树相等判断以及二叉树的复制

    题目:输入一颗二叉树根节点,复制该树,返回新建树的根节点。
    分析:跟求二叉树的高度类似,使用递归调用,先序遍历即可完成。

    参考代码

    BNode* CopyBST(BNode* root)

    {
      if(root == NULL)
        return NULL;

      BNode* sub_tree = new BNode;

      sub_tree->data = root->data;
      sub_tree->left = CopyBST(root->left);
      sub_tree->right = CopyBST(root->right);

      return sub_tree;
    }

     

    题目:判断两颗二叉树是否相等。

    注意:
    1.root1和root2相等。
    2.root1的左右子树与root2的左右子树分别相同。
    分析:按照上述两种情况写出递归即可。

    参考代码:

    bool IsBSTEqual(BNode* root1,BNode* root2){ 
      if (root1==NULL && root2==NULL) { 
        return true; 
      } 
      else if (root1==NULL || root2==NULL) { 
        return false; 
      } 
      else { 
        if (root1->data != root2->data) { 
          return false; 
      } 

      bool is_left = IsBSTEqual(root1->left,root2->left); 
      bool is_right = IsBSTEqual(root1->right,root2->right); 

      if (is_left&&is_right) 
        return true; 
      else 
        return false; 
      } 
    }

    总结:二叉树的深度,二叉树的复制以及判断相等,都是使用递归思想。

  • 相关阅读:
    STS 配置tomcat以后,无法访问
    docker
    Java
    STS
    Java
    docker
    sql产生随机时间
    sql产生随机数
    Android 代码自动提示功能
    Activity的跳转与传值
  • 原文地址:https://www.cnblogs.com/xiaoChongUp/p/3369026.html
Copyright © 2011-2022 走看看