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; 
      } 
    }

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

  • 相关阅读:
    C语言中for循环的使用
    详解C语言的main函数
    计算机语言的发展(the history of computer's language)
    hdu 1001
    hoj 1002
    hdu 1000
    POJ 1000(水题)
    hoj 1001
    code hunt题解(1)
    《C和指针》学习笔记(3)
  • 原文地址:https://www.cnblogs.com/xiaoChongUp/p/3369026.html
Copyright © 2011-2022 走看看