zoukankan      html  css  js  c++  java
  • Data Structure Binary Tree: Check if a given Binary Tree is SumTree

    http://www.geeksforgeeks.org/check-if-a-given-binary-tree-is-sumtree/

     1 #include <iostream>
     2 #include <vector>
     3 #include <algorithm>
     4 #include <queue>
     5 #include <stack>
     6 #include <string>
     7 #include <fstream>
     8 using namespace std;
     9 
    10 struct node {
    11     int data;
    12     struct node *left, *right;
    13     node() : data(0), left(NULL), right(NULL) { }
    14     node(int d) : data(d), left(NULL), right(NULL) { }
    15 };
    16 
    17 bool isleaf(node *root) {
    18     return !root->left && !root->right;
    19 }
    20 
    21 bool issumtree(node *root) {
    22     if (!root || isleaf(root)) return true;
    23     int l = 0;
    24     int r = 0;
    25     if (root->left == NULL) l = 0;
    26     else if (isleaf(root->left)) l = root->left->data;
    27     else l = 2 * root->left->data;
    28     if (root->right == NULL) r = 0;
    29     else if (isleaf(root->right)) r = root->right->data;
    30     else r = 2 * root->right->data;
    31     return root->data == l + r && issumtree(root->left) && issumtree(root->right);
    32 }
    33 
    34 int main() {
    35     node *root = new node(26);
    36     root->left = new node(10);
    37     root->right = new node(3);
    38     root->left->left = new node(4);
    39     root->left->right = new node(6);
    40     root->right->right = new node(3);
    41     if (issumtree(root)) cout << "yes" << endl;
    42     else cout << "NO" << endl;
    43     return 0;
    44 }
  • 相关阅读:
    HashMap
    java反射
    arraylist和linkedlist区别
    int和Integer的区别
    java 数组排序并去重
    矩阵链乘法问题
    找零问题
    硬币收集问题
    最大借书量问题
    钢条切割问题
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3632049.html
Copyright © 2011-2022 走看看