Hi Fareed,
Why don't you populate the control with SiteMapDataSource items and inside ItemDataBound check whether the pageNode is navigable or not?
<telerik:RadTreeView runat="server" ID="TreeView1" DataSourceID="SiteMap1"></telerik:RadTreeView>
<asp:SiteMapDataSource runat="server" ID="SiteMap1" ShowStartingNode="false" />
What I suppose is that you are calling PopulateTreeViewControl() twice or multiple times TreeView1.Nodes.Add(parentNode) / parentNode.ChildNodes.Add(childNode);; for the same node.
Also you can write another function that calls itself recursively.
sample
All the best,
Ivan Dimitrov
the Telerik team
Consider using RadControls for ASP.NET AJAX (built on top of the ASP.NET AJAX framework) as a replacement for the Telerik ASP.NET Classic controls, See the product support lifecycle here.