C++中的引用(257BinaryTreePath)
生活随笔
收集整理的這篇文章主要介紹了
C++中的引用(257BinaryTreePath)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//例子來自于leetcode257題 BinaryTreePath
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 vector<string> binaryTreePaths(TreeNode* root) { 13 vector<string> result; 14 if(root==NULL){ 15 return result; 16 } 17 DFS(root,"",result); 18 return result; 19 } 20 void DFS(TreeNode* treenode,string tempStr,vector<string>& result){//想要將result的值傳出去,需要使用引用。 21 if(treenode->left==NULL&&treenode->right==NULL){ 22 result.push_back(tempStr+to_string(treenode->val));//C++中to_string可以將任意類型轉化成string類型 23 } 24 if(treenode->left!=NULL){ 25 DFS(treenode->left,tempStr+to_string(treenode->val)+"->",result); 26 } 27 if(treenode->right!=NULL){ 28 DFS(treenode->right,tempStr+to_string(treenode->val)+"->",result); 29 } 30 31 } 32 33 };
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 vector<string> binaryTreePaths(TreeNode* root) { 13 vector<string> result; 14 if(root==NULL){ 15 return result; 16 } 17 DFS(root,"",result); 18 return result; 19 } 20 void DFS(TreeNode* treenode,string tempStr,vector<string>& result){//想要將result的值傳出去,需要使用引用。 21 if(treenode->left==NULL&&treenode->right==NULL){ 22 result.push_back(tempStr+to_string(treenode->val));//C++中to_string可以將任意類型轉化成string類型 23 } 24 if(treenode->left!=NULL){ 25 DFS(treenode->left,tempStr+to_string(treenode->val)+"->",result); 26 } 27 if(treenode->right!=NULL){ 28 DFS(treenode->right,tempStr+to_string(treenode->val)+"->",result); 29 } 30 31 } 32 33 };
在函數DFS中,參數vector<string>&我們使用引用方式傳參,這樣在函數中操作的對象就是調用外面的那個對象本身。
如果不寫“&”,會產生兩個影響:
1.當你想要對這個參數進行修改時,在函數返回后,這個值不會改變。
2.在做參數傳遞時,不加“&”,在傳參過程中,會產生一個臨時變量,會造成一定的效率浪費。
在以上代碼中,如果不加上&,會使得返回的result結果內容始終為空。
ps:函數聲明時,只是告訴編譯器存在這個函數,這個時候可以不帶參數名稱,定義的時候必須實行函數本體,則必須加上參數名稱。
轉載于:https://www.cnblogs.com/timesdaughter/p/5318863.html
總結
以上是生活随笔為你收集整理的C++中的引用(257BinaryTreePath)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 容器及选用总结
- 下一篇: puppet 工作原理