index = 0; if(len > 0) root = new TreeNode(dat[index]); else return NULL; list
node; node.push_back(root); index ++; while(index < len) { if(!node.empty()) { TreeNode *root = node.front(); if(index < len ) { if(dat[index] != '#') { root->left = new TreeNode(dat[index]); node.push_back(root->left); } index ++; } if(index < len ) { if(dat[index] != '#') { root->right = new TreeNode(dat[index]); node.push_back(root->right); } index ++; } node.pop_front(); } } return root; } void traversal(TreeNode *node) { if(!node) return; cout <<"\t"<< node->val; traversal(node->left); traversal(node->right); } class Solution { public: bool isValidBST(TreeNode *root) { int minmum = 0xffffffff; return judge(root, minmum); } bool judge(TreeNode *root, int &min) { if(!root) return true; bool flag = judge(root->left, min); if(!flag) return false; if(root->val < min) return false; min = root->val; return judge(root->right, min); } }; int main(int argc, char *argv[]) { if(argc < 2) { cout <<"Usage: ./binary_tree_inorder_traversal tree_list(4 2 6 5 3 1 # 6) "<
这个方法将每个参数都atoi为整数,那么在构造二叉树函数constructTree中,就需要注意,‘#’的ascii码值是34,小心哦。不过用来测试,勉强可用吧。
|