区别:
1.c++可以看到底层,比如内存地址,可以很明确地理解当前对象是什么类型;py有时候不大确定,比如py的node.left=…,不清楚left装的是对象指针,还是装的整个对象?应该是指针吧。
py版:
class Node:
def __init__(self,val):
self.val=val
self.left=[]
self.right=[]
def solve(_list):
if _list==[]:
return
ind=int((len(_list)-1)/2)
node=Node(_list[ind])
if ind!=0:
node.left=solve(_list[0:ind])
node.right=solve(_list[ind+1:])
elif ind==0 and len(_list)==2:
node.right=solve([_list[1]])
return node
def preorder(root):
if root==[]:
return
preorder(root.left)
print(root.val)
preorder(root.right)
_list=[1,2,3,4,5,6,7]
root=solve(_list)
preorder(root)
C++版
#include<iostream>
using namespace std;
struct Node{
Node(int v)
{
val=v;
left=nullptr;
right=nullptr;
};
int val;
Node* left;
Node* right;
};
Node* Solve(int* list,int len)
{
if(len!=0)
{
int ind=(len-1)/2;
Node* node=new Node(list[ind]);
if (ind!=0)
{
node->left=Solve(list,ind);
node->right=Solve(&list[ind+1],len-ind-1);
}
else if(ind==0 && len==2)
{
node->right=Solve(&list[1],1);
}
return node;
}
};
void PreOrder(Node* node)
{
if (node->left!=nullptr)
{
PreOrder(node->left);
}
cout<<node->val<<endl;
if (node->right!=nullptr)
{
PreOrder(node->right);
}
}
int main()
{
int len=7;
int* vec=new int[len];
for(int i=0;i<len;i++){
vec[i]=i;
}
Node* node(Solve(vec,len));
PreOrder(node);
cin.get();
}