先序遍历建树
以后的算法中可能需要有建树的过程,就把建树的过程,单独弄出来了。
通过先序遍历来建立一棵树。如果要建立的树长成这样:
10
/ \
6 14
/ \ /
4 8 12
那么输入则是应该是这样 10 6 4 # # 8 # # 14 12 # # # 应该是每一个值成为一行,而不是我这样把所有的值都写成一行。
他的规则就是,一个先序遍历的过程,先10,再6,在4,在NULL,在NULL,在8,在14,在12,在NULL,NULL,NULL
#include <iostream> using namespace std; struct TreeNode { int data; TreeNode* pLeftChild; TreeNode* pRightChild; }; void CreateTree(TreeNode*& pRoot) { char buffer[10]; memset(buffer, 0, 10); std::cin.getline(buffer, 9); int a = atoi(buffer); if(a == 0) pRoot = NULL; else { pRoot = new TreeNode(); pRoot->data = a; pRoot->pLeftChild = pRoot->pRightChild = NULL; CreateTree(pRoot->pLeftChild); CreateTree(pRoot->pRightChild); } }