* 先序创建、输出 二叉树 * 先序遍历②叉树(递归) * 中序遍历二叉树(递归) * 后序遍历二叉树(递归) * 先序遍历二叉树(非递归) * 思路:对于任意节点T访问这个节点并压入棧中,然后访问节点的左子树 * 遍历完左子树后,取出栈顶的节点T再先序遍历T的右子树
//栈不为空时,或者p不为空时循环
//当前节点不为空访问并压入栈中。并将当前节点赋值为左儿子 // 1、当p指向的左儿子时此时栈顶元素必然是它的父节点 // 2、当p指向的右儿子时,此时栈顶元素必然是它的爷爷节点 //取出栈顶元素赋值为riht * 中序遍历二叉树(非递归) *
思路:先将T入栈,遍历左子树;遍历完左子树返回时栈顶元素應为T, * 出栈访问T-&t;data,再中序遍历T的右子树
//栈不为空时,或者p不为空时循环 //当前节点不为空压入栈中。并将当前节点赋值为左儿子 // 1、当p指向的左儿子时此时栈顶元素必然是它的父节点 //
2、当p指向的右儿子时,此时栈顶元素必然是它的爷爷节点 //取出并访问栈顶元素赋值为riht * 後序遍历二叉树(非递归)
//栈不空或者p不空时循环 //左右子树访问完毕访问根节点 * 层次遍历二叉树(非递归)
测试上面的四种遍历+先序创建樹
* 测试二叉树的 创建、遍历
//先序遍历(非递归) //中序遍历(非递归) //后序遍历(非递归) //层次遍历(非递归)