二叉樹遍歷遞迴與非遞迴實現

2021-10-25 05:33:38 字數 1144 閱讀 1593

// 二叉樹遍歷

// 先序遍歷

void preorder(treenode* r, char* pattern)

printf(pattern, r->value);

preorder(r->lchild,pattern);

preorder(r->rchild,pattern);

}// 先序遍歷非遞迴實現

void preorder_norecursion(treenode* r, char* pattern)

}

// 中序遍歷

void inorder(treenode* r, char* pattern)

inorder(r->lchild,pattern);

printf(pattern, r->value);

inorder(r->rchild,pattern);

}// 中序遍歷非遞迴實現

void inorder_norecursion(treenode* r, char* pattern)

// 等於最後乙個左子樹或已經訪問完左子樹的根節點,也就是需要輸出的根結點

current = s[i--];

printf("%d ", current->value);

if(current->rchild) // 如果有右子樹子,對右子樹進行遍歷

else

}while(i != -1 || current);

// 當棧空但當前結點不為空時,當前樹是下乙個要訪問的結點

}

// 後序遍歷

void postorder(treenode* r, char* pattern)

postorder(r->lchild,pattern);

postorder(r->rchild,pattern);

printf(pattern, r->value);

}// 後序遍歷非遞迴實現

void postorder_norecursion(treenode* r, char* pattern)

while(i != -1)

else // 如果上次訪問的是左子樹}}

}

二叉樹遍歷 遞迴 非遞迴實現

先序遍歷中序遍歷 後序遍歷 根結點 左子樹 右子樹 左子樹 根子樹 右子樹 左子樹 右子樹 根結點 先序遍歷 void preorder btree t 中序遍歷 void inorder btree t 後序遍歷 void postorder btree t 遞迴 recursion 就是子程式 ...

二叉樹遍歷(遞迴 非遞迴)

二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...

二叉樹遞迴 非遞迴遍歷(Java實現)

遍歷是對一顆二叉樹最基本的操作,有前序遍歷 中序遍歷 後序遍歷和層次遍歷四種,都可以通過遞迴或者資料結構實現。假定葉子結構如下 static classleaf publicstring tostring 1.前序遍歷 先訪問其根節點,再訪問其左節點,最後訪問其右節點。遞迴實現 先訪問其根節點,然後...