前序遍歷二叉樹
阿新 • • 發佈:2018-11-21
#include <stdio.h> int main(){ //每個節點中第0位位真實值,第1位左子樹節點陣列下標(-1表示無),第2位是右子樹節點陣列下標(-1表示無), //int a[5][3]={{1,1,2},{2,-1,-1},{3,-1,-1}}; //int a[5][3]={{1,1,2},{2,3,4},{3,-1,-1},{4,-1,-1},{5,-1,-1}}; //int a[5][3]={{1,1,2},{2,3,-1},{3,-1,-1},{4,-1,-1},{}}; int a[5][3]={{1,1,2},{2,-1,4},{3,-1,-1},{},{5,-1,-1}}; //int a[5][3]={{1,1,2},{2,-1,-1},{3,3,4},{4,-1,-1},{5,-1,-1}}; //int a[5][3]={{1,1,2},{2,-1,-1},{3,-1,4},{},{5,-1,-1}}; //int a[5][3]={{1,1,2},{2,-1,-1},{3,3,-1},{4,-1,-1},{}}; int stack[5]; int stackOffset=0; stack[stackOffset++]=0; while(stackOffset>0){ int *tmp=a[stack[--stackOffset]]; printf("%d\n",*(tmp+0)); int leftIndex=*(tmp+1); int rightIndex=*(tmp+2); if( rightIndex!=-1){ stack[stackOffset++]=rightIndex; } if(leftIndex!=-1 ){ stack[stackOffset++]=leftIndex; } } return 0; }