本文共 2006 字,大约阅读时间需要 6 分钟。
以下是优化后的代码:
#include#include using namespace std;struct Node { char data; Node* Lchild; Node* Rchild;};int max(int a, int b) { return (a > b) ? a : b;}class Text {public: Text() { root = new Node; root->Lchild = nullptr; root->Rchild = nullptr; } ~Text() { delete root; root = nullptr; } void preorderTraversal() { preorder(root); } int calculateDepth() { return depth(root); }private: Node* root; int leftDepth; int rightDepth; Node* createTree() { char ch; if (cin >> ch) { Node* node = new Node; node->data = ch; node->Lchild = createTree(); node->Rchild = createTree(); return node; } else { return nullptr; } } void releaseMemory(Node* node) { if (node) { releaseMemory(node->Lchild); releaseMemory(node->Rchild); delete node; } } void preorder(Node* node) { if (!node) return; preorder(node->Lchild); preorder(node->Rchild); } int depth(Node* node) { if (!node) return 0; int left = depth(node->Lchild); int right = depth(node->Rchild); return max(left, right) + 1; }};int main() { bool keepGoing = true; Text tree; while (keepGoing) { tree.releaseMemory(root); root = tree.createTree(); if (cin >> noskipws) { if (!tree.root) { keepGoing = false; } else { cout << tree.calculateDepth() << endl; } } else { keepGoing = false; } } return 0;}
优化说明:
noskipws
来处理输入中的空格,确保读取正确的字符序列。转载地址:http://nfjr.baihongyu.com/