怎么做好網(wǎng)站方式推廣免費私人網(wǎng)站建設(shè)
題目鏈接:
二叉樹遍歷_??皖}霸_牛客網(wǎng)編一個程序,讀入用戶輸入的一串先序遍歷字符串,根據(jù)此字符串建立一個二叉樹(以指針方式存儲)。題目來自【牛客題霸】https://www.nowcoder.com/share/jump/437195121692547007478
描述
編一個程序,讀入用戶輸入的一串先序遍歷字符串,根據(jù)此字符串建立一個二叉樹(以指針方式存儲)。 例如如下的先序遍歷字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空樹。建立起此二叉樹以后,再對二叉樹進行中序遍歷,輸出遍歷結(jié)果。
輸入描述:
輸入包括1行字符串,長度不超過100。
輸出描述:
可能有多組測試數(shù)據(jù),對于每組數(shù)據(jù), 輸出將輸入字符串建立二叉樹后中序遍歷的序列,每個字符后面都有一個空格。 每個輸出結(jié)果占一行。
示例1
輸入:
abc##de#g##f###
輸出:
c b e g d f a
源代碼:
#include<iostream>
#include<string>
using namespace std;//例題10.1 二叉樹遍歷
struct TreeNode {char data;TreeNode* leftChild;TreeNode* rightChild;TreeNode(char c): data(c), leftChild(NULL), rightChild(NULL){}
};TreeNode* Build(int& pos, string str) {char c = str[pos++];if (c == '#') {return NULL;}TreeNode* root = new TreeNode(c);root->leftChild = Build(pos, str);root->rightChild = Build(pos, str);return root;
}void Inorder(TreeNode* root) {if (root == NULL) {return;}Inorder(root->leftChild);cout << root->data << " ";Inorder(root->rightChild);return;
}int main()
{string s;cin >> s;int pos = 0;TreeNode* root = Build(pos, s);Inorder(root);cout << endl;return 0;
}
提交結(jié)果:
?