Here you can do with delegate methods   
// This is your root ViewController to call delegate methods
#import "ThirdViewController.h"
#import "SecondViewController.h"
 @interface ViewController ()<ThirdViewControllerDelegate>
  @end
@implementation ViewController
 #pragma mark -
 #pragma mark ThirdViewController Delegate Method
// Implementation of delegate methods in your Root ViewController
-(void)didSelectValue:(NSString *)value{
    NSLog(@"%@",value);
}
// Pass the last Vc delegate to the next ViewController
-(void)gotoSeconddVc{
    SecondViewController *vc2=[[SecondViewController alloc]init];
    vc2.lastDelegate=self;
    [self.navigationController pushViewController:vc2 animated:YES];
}
 #import "ThirdViewController.h"
     @interface SecondViewController : UIViewController
        @property(nonatomic,retain) id <ThirdViewControllerDelegate> lastDelegate;
        @end
-(void)gotoThirdVc{
    ThirdViewController *vc3=[[ThirdViewController alloc]init];
    vc3.delegate=self.lastDelegate;
    [self.navigationController pushViewController:vc3 animated:YES];
}
Implementation of last viewcontroller
@implementation ThirdViewController
-(void)btnDoneClicked{
    [self.navigationController popToRootViewControllerAnimated:YES];
    [self.delegate didSelectValue:strValue]; //call delegate methods here
}