Пример #1
0
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);
    }
}
Пример #2
0
// 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");
}
Пример #3
0
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");
}
Пример #4
0
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));
}
Пример #6
0
 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);
 }