You are adding a child to second here:
[(Person *)[quick.children objectAtIndex:0]addChild:[[Person alloc]initWithName:@"Third"]];
Similarly you may add child to third as:
[(Person*)[((Person *)[quick.children objectAtIndex:0]).children objectAtIndex:0]addChild:[[Person alloc]initWithName:@"Fourth"]];
and then to fourth as:
[(Person*)[((Person*)[((Person *)[quick.children objectAtIndex:0]).children objectAtIndex:0]).children objectAtIndex:0] addChild:[[Person alloc]initWithName:@"Fifth"]];
OR to make it simple, first create the lowest level object and then add it as a child to its parent:
Person *fifth = [[Person alloc]initWithName:@"Fifth"];
Person *fourth = [[Person alloc]initWithName:@"Fourth"];
[fourth addChild: fifth];
Person *third = [[Person alloc]initWithName:@"Third"];
[third addChild: fourth];
Person *second = [[Person alloc]initWithName:@"Second"];
[second addChild: third];
Person *quick = [[Person alloc]initWithName:@"First"];
[quick addChild: second];