void levelTraverse(TreeNode* node, int curLevel, bool& nextLevel, vector<int>& level) { if(!node) return; if(curLevel == 1) { level.push_back(node -> val); if(node -> left || node -> right) nextLevel = true; } else { levelTraverse(node -> left, curLevel - 1, nextLevel, level); levelTraverse(node -> right, curLevel - 1, nextLevel, level); } }
// test all the 4 traverses void testTraverse(TreeNode* root){ printf("Traverse data && leftTree && rightTree:\n"); preTraverse(root); printf("\nTraverse leftTree && data && rightTree:\n"); inTraverse(root); printf("\nTraverse leftTree && rightTree && data:\n"); postTraverse(root); printf("\nTraverse by level: \n"); levelTraverse(root); printf("\n"); }
void printLevel(node_t *root) { int level; printf("\n层次遍历为:\n"); for(level=1;level<=10;level++) { printf("L%d ",level); } printf("\n"); levelTraverse(root,0); printf("\n"); }
void levelTraverse(node_t * root,int level) { int i; for(i=0;i<level;i++) printf(" "); if(root == NULL) { printf("nil\n"); return ; } else { printf("%d",root->key); if(root->colour == RED) printf("R\n"); else printf("B\n"); } level++; levelTraverse(root->left,level); levelTraverse(root->right,level); }
int main() { printf("Please input the values of nodes seperated by space with -1 denotes termination\n"); BTree root=(BTree)malloc(sizeof(BiTNode)); root->left=NULL; createSortedTree(&(root->left)); printf("create done! print\n"); printf("in order sequence:\n"); inOrderTraverse(root->left); printf("\npost order sequence(1):\n"); postOrderTraverse(root->left); printf("\npost order sequence(2):\n"); postOrderTraverse2(root->left); printf("\n The level sequenece is:\n"); levelTraverse(root->left); printf("\nlink view:\n"); linkTraverse(tree2link(root->left)); }
bool isSymmetric(TreeNode* root) { if (!root || (!root->left && !root->right)) return true; else if (!root->left || !root->right) return false; else return levelTraverse(root->left, root->right); }