#region 查找指定节点的前驱 /// <summary> /// 查找指定节点的前驱 /// </summary> /// <typeparam></typeparam> /// <param></param> /// <returns></returns> public ThreadTree<T> BinTreeThreadPrev_LDR<T>(ThreadTree<T> tree) { if (tree == null) return null;
//如果标志域中存放的是线索,那么可以直接找出来 if (tree.leftFlag == NodeFlag.Thread) return tree.left; else { //根据”中序“的规则可知,如果不为Thread,则要找出左子树的最后节点 //也就是左子树中最后输出的元素 var leftNode = tree.left;
while (leftNode.rightFlag == NodeFlag.SubTree) leftNode = leftNode.right;
return leftNode; } } #endregion
#region 遍历线索二叉树 /// <summary> /// 遍历线索二叉树 /// </summary> /// <typeparam></typeparam> /// <param></param> public void BinTreeThread_LDR<T>(ThreadTree<T> tree) { if (tree == null) return;
while (tree.leftFlag == NodeFlag.SubTree) tree = tree.left;
do { Console.Write(tree.data + "t");
tree = BinTreeThreadNext_LDR(tree);
} while (tree != null);
} #endregion } #endregion }
将文章开头处的数据输入到存储结构中
(编辑:焦作站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|