词条 | 中序遍历 |
释义 | 中序遍历(LDR)中序遍历也叫做中根遍历,可记做左根右。 中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,仍然先遍历左子树,再访问根结点,最后遍历右子树。即: 若二叉树为空则结束返回, 否则: (1)中序遍历左子树。 (2)访问根结点。 (3)中序遍历右子树。 注意的是:遍历左右子树时仍然采用中序遍历方法。 即左子树(B D E)还是左边开始(D),然后是(B),再是右边(E),完后经过(A),接着右子树(C F) 还是左边开始(F),再是中间(C), 即顺序是DBEAFC 中序遍历的时间复杂度为:O(n)。 如果一颗二叉排序树的节点值是数值,中序遍历的结果为升序排列的数组。可以利用该性质检测一棵树是否为二叉排序数。 程序实现c++版本树中节点结构为: typedef struct TreeNode { int data; TreeNode * left; TreeNode * right; TreeNode * parent; }TreeNode; void middle_order(TreeNode * Node) { if(Node != NULL) { middle_order(Node->left); printf("%d ", Node->data); middle_order(Node->right); } } 调用时: middle_order(Root); //Root为树的根 Java版本class TreeNode{ public int data; public TreeNode leftChild; public TreeNode rightChild; public static void inOrderTraversal(TreeNode node){ if(node == null){ return; }else{ inOrderTraversal(node.leftChild); System.out.println(node.data); inOrderTRaversal(node.rightChild); } } } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。