//后序遍历二叉树(左、右、根)(递归算法) void postOrderPrint(BiTree T, int root){ if(root){//根节点不为空 postOrderPrint(T, T[root].llink); postOrderPrint(T, T[root].rlink); printf("%c ", T[root].data); } }
void postOrderPrint(struct TreeNode *root) { if (root) { postOrderPrint(root->left); postOrderPrint(root->right); printf("%d ", root->val); } }
void binaryTree::postOrderPrint(node* node) { if(node == NULL) return; postOrderPrint(node->left); postOrderPrint(node->right); std::cout << node->value << " "; }
/* function to print the values of the nodes of a tree using a post-order traversal */ void postOrderPrint(TreeNodePtr rootPtr) { if (rootPtr != NULL) { postOrderPrint(rootPtr->leftPtr); postOrderPrint(rootPtr->rightPtr); printf("%d ", rootPtr->data); } }
void postOrderPrint(NODE* ptr){ if(ptr->left != NULL) postOrderPrint(ptr->left); if(ptr->right != NULL) postOrderPrint(ptr->right); printf("%d ", ptr->num); return; }
void postOrderPrint(HuffNode *root, FILE* fp) { // Base case: empty subtree if (root == NULL) return; // Recursive case: post-order traversal // Visit left fprintf(fp,"Left\n"); postOrderPrint(root->left, fp); fprintf(fp,"Back\n"); // Visit right fprintf(fp,"Right\n"); postOrderPrint(root->right,fp); fprintf(fp,"Back\n"); // Visit node itself (only if leaf) if (root->left == NULL && root->right == NULL) fprintf(fp,"Leaf: %c\n", root->value); }
int main() { int in[] = { 4, 8, 10, 12, 14, 20, 22 }; int post[] = { 4, 10, 14, 12, 8, 22, 20 }; struct TreeNode *r = buildTree(in, sizeof(in)/sizeof(in[0]), post, sizeof(post)/sizeof(post[0])); postOrderPrint(r); printf("\n"); return 0; }
void main(){ BiTree tree; int root = 1;//根节点的位置 printf("请按先序次序输入二叉树各节点以#号结束,空树用点号代替:\n"); int pos = 1;//控制加入静态数组的位置 createBiTree(tree, root, pos); printf("先序遍历打印二叉树(递归算法):\n"); preOrderPrint(tree, root); printf("\n"); printf("先序遍历打印二叉树(非递归算法):\n"); preOrderPrint2(tree, root); printf("\n"); printf("中序遍历打印二叉树(递归算法):\n"); inOrderPrint(tree, root); printf("\n"); printf("中序遍历打印二叉树(非递归算法):\n"); inOrderPrint2(tree, root); printf("\n"); printf("后序遍历打印二叉树(递归算法):\n"); postOrderPrint(tree, root); printf("\n"); printf("后序遍历打印二叉树(非递归算法):\n"); postOrderPrint2(tree, root); printf("\n"); printf("按层次遍历打印二叉树(非递归算法):\n"); hierarchicalTraversePrint(tree, root); printf("\n"); int depth = getBiTreeDepth(tree, root); printf("该二叉树的深度为:%d\n", depth); int size = getBiTreeSize(tree, root); printf("该二叉树的结点数为:%d\n", size); int leafNodesNum = getBiTreeLeafNodesNum(tree, root); printf("该二叉树的叶子结点数为:%d\n", leafNodesNum); }
int main(){ NODE* ptr; TREE* tree; int i=0; tree = create_tree(); for(i=0; i<13; i++){ insertNode(tree, i); } printf("PreOrder: "); preOrderPrint(tree->root); printf("\nInOrder: "); inOrderPrint(tree->root); printf("\npostOrder: "); postOrderPrint(tree->root); printf("\nPrint list:"); linklistprint(tree->root); printf("\ntree count: %d\n", tree->count); return 0; }
/* Function to illustrate printing the nodes of a tree using pre-order, in-order, and post-order traversals */ void traversalExamples() { int i, value; TreeNodePtr rootPtr = NULL; /* create example tree by inserting 10 nodes with random values into random positions of tree */ srand(time(NULL)); /* seed random number generator */ for (i=0; i < 10; i++) { value = rand() % 100; insertTreeNodeRandomly(&rootPtr, value); } printf("RANDOM TREE:\n"); printTree(rootPtr, 0); printf("\nPre-order traversal:\n"); preOrderPrint(rootPtr); printf("\nIn-order traversal:\n"); inOrderPrint(rootPtr); printf("\nPost-order traversal:\n"); postOrderPrint(rootPtr); printf("\n"); }
void binaryTree::printpost(node* node){ std::cout << "post order: " ; return postOrderPrint(root); }