2017-10-20 220 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