建立一顆二叉排序樹,並輸出它的前序、中序、後序以及層次遍歷結
輸入:
569
158輸出:61
598//前序15
689//中序51
896//後序61
958//層次
//main函式
public
static
void
main
(string args)
treenode root = new treenode(array[0]);
for(int i = 1; i < num; i++)
dlr(root);//前序遍歷
system.out.println();
ldr(root);//中序遍歷
system.out.println();
lrd(root);//後序遍歷
system.out.println();
levelorder(root);//層次遍歷
system.out.println();
} }
//前序遍歷非遞迴
public
static
void
dlr(treenode node) }
} //中序遍歷非遞迴
public
static
void
ldr(treenode node)
else
} }
//後序遍歷非遞迴
public
static
void
lrd(treenode node)
while(node!=null && (node.right==null || node.right==pre))
stack.push(node);
node = node.right;
} }
//層次遍歷非遞迴
public
static
void
levelorder
(treenode node) }
//構建二叉排序樹
public
static
void
buildbst
(treenode node,int val)
else
}
//二叉樹節點結構
class
treenode
}```
前序建立二叉樹 前序 中序 後序遍歷二叉樹
二叉樹的建立 如果要在記憶體中建立乙個如下左圖這樣的樹,wield 能讓每個結點確認是否有左右孩子,我們對它進行擴充套件,變成如下右圖的樣子,也就是將二叉樹中的每個結點的空指標引出乙個虛結點,其值為乙個特定值,比如 稱之為擴充套件二叉樹。擴充套件二叉樹就可以做到乙個遍歷序列確定一棵二叉樹了。如前序遍...
二叉樹遍歷(前序,中序,後序
二叉樹的遍歷有三種方式,如下 1 前序遍歷 dlr 首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。簡記根 左 右。2 中序遍歷 ldr 首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。簡記左 根 右。3 後序遍歷 lrd 首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。簡記左 右 根。例1 如上圖...
由前序 中序,輸出二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。treenode build vectorpre,vectorin 思路 遞迴邊界 當前序為空時,返回空,當前序只有乙個元素時,顯然...