[問題] Binary Search Tree, preOrder

看板C_and_CPP (C/C++)作者 (NA)時間14年前 (2012/01/05 17:55), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
在BST的顯示法中 preOrder應該長得像下面這樣 void BinaryTree::preOrder(TreeNode *NodePtr){ if(NodePtr){ cout<< NodePtr->data <<" "; preOrder(NodePtr->left); preOrder(NodePtr->right); } } 一開始我忘記加 if(NodePtr) 如下就跑不出來 void BinaryTree::preOrder(TreeNode *NodePtr){ cout<< NodePtr->data <<" "; preOrder(NodePtr->left); preOrder(NodePtr->right); } 想請問一下是為什麼呢? 在顯示出來前 已經插入了 5,9,1,6,4 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.243.66

01/05 17:59, , 1F
"跑不出來" 是指 編不過? 一開始就不能跑? 中途不能跑?
01/05 17:59, 1F

01/05 18:29, , 2F
語法沒錯 但是會卡在那邊沒有結果出來
01/05 18:29, 2F

01/05 18:32, , 3F
遞迴原則上都會有終止條件, 也就是 preOrder 必然有機會不跑
01/05 18:32, 3F

01/05 18:33, , 4F
這裡應該是用 NodePtr 是否為 NULL 來決定 Leaf
01/05 18:33, 4F

01/05 18:33, , 5F
到 Leaf 就不跑
01/05 18:33, 5F

01/05 18:36, , 6F
瞭解!原來是為了遞迴的終止條件! 感謝~
01/05 18:36, 6F
文章代碼(AID): #1F1NEWiP (C_and_CPP)
文章代碼(AID): #1F1NEWiP (C_and_CPP)