2017-10-20 142 views
-4

例如全部打印出来:找到树的序遍历和通过否定每隔数

  1 
    / \ 
    /  \ 
    2    3 
/\  /\ 
4 5  6 7 

序遍历输出:4 2 5 1 6 3 7

预期输出:4 -2为序5 -1 6 -3 7

代码是

Node * func(struct Node * root){ 
if(root!=NULL) 
{ 
func(root->lChild); 
cout<<root->nodeValue<<" "; 
func(root->rChild); 
} 
return NULL; 

}

+1

我们假设你不能把所有列表中的项目,然后否定,对吗? – alseether

+3

是什么问题?你的标题读起来像是你没有问过的问题的答案,就像@alseether说的那样,只需先把所有的数字都打印出来,然后用交替的标记打印出来 – user463035818

+1

祝你的作业好运,但如果你需要帮助,已经尝试过,并且遇到了确切的问题。 – UKMonkey

回答

1

所有你可能需要做的,添加一个额外的参数来跟踪交替的迹象,一些像以下:

Node * func(struct Node * root, int& signV){ 
    if(root!=NULL) 
    { 
    func(root->lChild, signV); 
    cout<<root->nodeValue * signV <<" "; signV *= -1 ; // Change sign here 
    func(root->rChild, signV); 
    } 
    return NULL; 
} 

See Here