crack the code interview 4.7
来源:互联网 发布:中控考勤软件 编辑:程序博客网 时间:2024/04/27 22:39
You have two very large binary trees: T1, with millions of nodes, and T2, with hundreds of nodes. Create an algorithm to decide if T2 is a subtree of T1.
#include <iostream>
using namespace std;
struct TreeNode
{
int value;
TreeNode * left;
TreeNode * right;
TreeNode(int v, TreeNode * l, TreeNode * r)
{
value = v;
left = l;
right = r;
}
TreeNode(int v)
{
value = v;
left = NULL;
right = NULL;
}
};
//node1 contain node2
bool matchTree(TreeNode * node1, TreeNode * node2)
{
if (node1 == NULL && node2 != NULL)
return false;
else if (node2 == NULL)
return true;
else if (node1->value != node2->value)
{
cout<<"not"<<endl;
return false;
}
else if (node1->value == node2->value)
{
return matchTree(node1->left, node2->left) && matchTree(node1->right, node2->right);
}
}
bool subTree(TreeNode * node1, TreeNode * node2)
{
if (matchTree(node1, node2))
return true;
else if (node1->left)
{
cout<<"left"<<endl;
return subTree(node1->left, node2);
}
else if (node1->right)
{
cout<<"right"<<endl;
return subTree(node1->right, node2);
}
}
int main(int argc, char *argv[])
{
TreeNode * node0 = new TreeNode(0);
TreeNode * node1 = new TreeNode(1);
TreeNode * node2 = new TreeNode(2, node0, node1);
TreeNode * node3 = new TreeNode(3);
TreeNode * node4 = new TreeNode(4, node2, node3);
cout<<subTree(node1, node2)<<endl;
return 0;
}
- crack the code interview 4.7
- crack the code interview 1.2
- crack the code interview 1.4
- crack the code interview 1.5
- crack the code interview 1.6
- crack the code interview 1.7
- crack the code interview 1.8
- crack the code interview 2.1
- crack the code interview 2.2
- crack the code interview 2.3
- crack the code interview 2.4
- crack the code interview 2.5
- crack the code interview 3.1
- crack the code interview 3.2
- crack the code interview 3.3
- crack the code interview 3.4
- crack the code interview 3.5
- crack the code interview 3.6
- C++学习笔记(1)--《程序员的自我修养--链接、装载、库》笔记
- hdu 1083 Courses (简单二分匹配)
- bfs知识点
- Zedgraph用法
- 永远怀念Steve Jobs——时代的先驱者
- crack the code interview 4.7
- 驱动程序遇到问题记录
- crack the code intervie 4.8
- 嵌入式 c++对文件流操作--C++文件操作详解(ifstream、ofstream、fstream)
- 《转》一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...
- AsyncHttpClient 帮助文档 (非常有用哦)
- if else
- 转帖 DM365 挂载NFS文件系统 【翻译】
- (CF)A. Vanya and Cards