zoukankan      html  css  js  c++  java
  • 判断两二叉树是否完全相同

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <stdbool.h> 
     4 
     5 typedef int ElementType;
     6 
     7 struct BinarySearchTreeNode
     8 {
     9     ElementType Element;
    10     struct BinarySearchTreeNode *Left;
    11     struct BinarySearchTreeNode *Right;
    12 };
    13 
    14 bool TwoBSTreeIsSame(struct BinarySearchTreeNode *TreeRoot_1,struct BinarySearchTreeNode *TreeRoot_2)
    15 {
    16     if(!TreeRoot_1 && !TreeRoot_2)
    17         return true;
    18     if( (TreeRoot_1 && !TreeRoot_2) || (!TreeRoot_1 && TreeRoot_2) || 
    19          TreeRoot_1->Element != TreeRoot_2->Element)
    20         return false;
    21     return TwoBSTreeIsSame(TreeRoot_1->Left,TreeRoot_2->Left) && TwoBSTreeIsSame(TreeRoot_1->Right,TreeRoot_2->Right);
    22 }
    23 
    24 int main()
    25 {
    26     struct BinarySearchTreeNode Tree_1[3];
    27     struct BinarySearchTreeNode Tree_2[3];
    28     struct BinarySearchTreeNode Tree_3[3];
    29     
    30     Tree_1[0].Element = 1;
    31     Tree_1[1].Element = 2;
    32     Tree_1[2].Element = 3;
    33     Tree_1[0].Left = &Tree_1[1];
    34     Tree_1[0].Right = NULL;
    35     Tree_1[1].Left = NULL;
    36     Tree_1[1].Right = &Tree_1[2];
    37     Tree_1[2].Left = NULL;
    38     Tree_1[2].Right = NULL;
    39     
    40     Tree_2[0].Element = 1;
    41     Tree_2[1].Element = 3;
    42     Tree_2[2].Element = 2;
    43     Tree_2[0].Left = &Tree_2[1];
    44     Tree_2[0].Right = NULL;
    45     Tree_2[1].Left = &Tree_2[2];
    46     Tree_2[1].Right = NULL;
    47     Tree_2[2].Left = NULL;
    48     Tree_2[2].Right = NULL;
    49     
    50     Tree_3[0].Element = 1;
    51     Tree_3[1].Element = 2;
    52     Tree_3[2].Element = 3;
    53     Tree_3[0].Left = &Tree_3[1];
    54     Tree_3[0].Right = NULL;
    55     Tree_3[1].Left = NULL;
    56     Tree_3[1].Right = &Tree_3[2];
    57     Tree_3[2].Left = NULL;
    58     Tree_3[2].Right = NULL;
    59     
    60     printf("Tree_1 compare with Tree_2: %d
    ",TwoBSTreeIsSame(&Tree_1[0],&Tree_2[0]));
    61     printf("Tree_1 compare with Tree_3: %d
    ",TwoBSTreeIsSame(&Tree_1[0],&Tree_3[0]));
    62     printf("Tree_3 compare with Tree_2: %d
    ",TwoBSTreeIsSame(&Tree_3[0],&Tree_2[0]));
    63     printf("Tree_3 compare with Tree_3: %d
    ",TwoBSTreeIsSame(&Tree_3[0],&Tree_3[0]));
    64     return 0;
    65 }
    66 /*
    67 
    68     Tree_1:   1        Tree_2:  1      Tree_3 is as same as Tree_1.
    69             ↙                 ↙
    70             2                 3
    71             ↘             ↙
    72               3            2
    73 */
  • 相关阅读:
    Linux新用户创建与删除细节详解
    通过windows远程访问linux桌面的方法(简单)
    物理机网络地址配置原理
    Hive安装中metadata初始化问题
    彻底理解Promise对象——用es5语法实现一个自己的Promise(上篇)
    基于react+react-router+redux+socket.io+koa开发一个聊天室
    深入探析koa之异步回调处理篇
    深入探析koa之中间件流程控制篇
    【踩坑记录】一个新手几乎都踩过的坑...
    NodeJS优缺点及适用场景讨论
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9474110.html
Copyright © 2011-2022 走看看